jyd_tts Docker容器化部署开机自启
如果是Docker 容器不要在 Dockerfile 里面做开机自启Docker 的标准做法是使用--restart策略。推荐方案★★★★★Dockerfile建议把CMD改成下面这样不要使用nohup。FROM python:3.10-slim WORKDIR /opt/jyd01/wangruihua/jyd_tts COPY requirements.txt . RUN pip install --no-cache-dir \ -i https://pypi.tuna.tsinghua.edu.cn/simple \ -r requirements.txt COPY . . RUN mkdir -p logs EXPOSE 8010 CMD [bash, -c, python tts_flask.py 21 | tee logs/8010.log]原因Python 是主进程PID1Python 崩溃Docker 能检测到docker logs可以查看日志日志同时保存到logs/8010.log构建镜像docker build -t jyd_tts:v1.0 .导出镜像用于部署docker save -o jyd_tts_v1.0.tar jyd_tts:v1.0新服务器导入docker load -i jyd_tts_v1.0.tar启动容器设置自动启动docker run -d \ --name jyd_tts_container \ -p 8010:8010 \ --restart always \ jyd_tts:v1.0如果需要挂载宿主机目录docker run -d \ --name jyd_tts_container \ -p 8010:8010 \ --restart always \ -v /opt/jyd01/wangruihua/api_docker/jyd_tts:/opt/jyd01/wangruihua/jyd_tts \ jyd_tts:v1.0其中--restart always表示服务器重启后自动启动Docker 服务重启后自动启动容器异常退出自动重启如果容器已经存在直接修改重启策略即可docker update --restartalways jyd_tts_container查看是否生效docker inspect -f {{.HostConfig.RestartPolicy.Name}} jyd_tts应该输出always取消重启测策略# 先停掉自动重启避免一直刷 docker update --restartno jyd_tts_container # 停止容器 docker stop jyd_tts_container # 查看退出原因和日志 docker logs --tail200 jyd_tts_container查看容器状态docker ps应该看到STATUS Up 3 minutes查看日志实时查看docker logs -f jyd_tts_container或者cat logs/8010.log如果你的服务器没有开启 Docker 自启动还需要执行一次sudo systemctl enable docker sudo systemctl start docker验证systemctl status docker只要 Docker 服务开机启动并且容器设置了--restart always那么服务器重启后tts_flask.py会自动启动无需额外写systemd服务。这是 Docker 官方推荐的部署方式。