创建容器时设置入口点entrypoint.sh,并设置容器自启动参数 --restart unless-stopped
docker run -d --name vlm -v /data:/data -v /usr/src:/usr/src -v /lib/modules:/lib/modules -v /dev:/dev -v /root:/workspace -p 8900:8900 --privileged --cap-add=ALL --pid=host --restart unless-stopped vlm:v1.0 /bin/bash -c “[ -f /workspace/entrypoint.sh ] && chmod +x /workspace/entrypoint.sh && /workspace/entrypoint.sh || echo ‘Entrypoint.sh not found’”
&&:从前往后检查条件,前一个成功才会执行下一个
||:从前往后检查条件,前一个失败才会执行下一个
自动运行的脚本entrypoint.sh
WORKSPACE_DIR=“some_path” 可以设置位容器外某个路径,同时通过-v的映射,容器内可以找到这个文件。
#!/bin/bashset -e # Exit on errorAPI_SCRIPT="/workspace/app.py"if [ -f "$API_SCRIPT" ]; thenecho "Starting API service..."python3 "$API_SCRIPT"
elseecho "API service not found. Running placeholder..."while true; doecho "Waiting for API script to be available..." >&2sleep 5done
fi
或
#!/bin/bashset -e # Exit on errorWORKSPACE_DIR="some_path"
API_SCRIPT="$WORKSPACE_DIR/app.py"# Change to the target directory
if [ -d "$WORKSPACE_DIR" ]; thencd "$WORKSPACE_DIR"
elseecho "Directory $WORKSPACE_DIR not found!" >&2exit 1
fiif [ -f "$API_SCRIPT" ]; thenecho "Starting API service from $(pwd)..."python3 "$API_SCRIPT"
elseecho "API service not found in $(pwd). Running placeholder..."while true; doecho "Waiting for app.py to be available..." >&2sleep 5done
fi
安装上面操作建立容器并设置自启动后,还可以继续进行容器环境的配置,比如安装软件、修改代码等操作,这不影响你服务开机自启动。
查看运行记录:
docker logs -f vlm
======
不考虑自启动的普通容器创建
docker run -id --name vlm -v /data:/data -v /usr/src:/usr/src -v /lib/modules:/lib/modules -v /dev:/dev -v /root:/workspace -p 8900:8900 --privileged --cap-add=ALL --pid=host --restart unless-stopped vlm:v1.0 /bin/bash
