问题
在你的Dockerfile中
RUN service mysql restart && /tmp/setup.sh
首先,docker镜像不快照您的运行进程,您的RUN命令只是在docker构建阶段运行,您需要指定命令运行时容器开始使用CMD或ENTRYPOINT命令,如下所示
CMD mysql start
其次Docker容器需要进程(最后一个命令)保持运行,否则容器将退出。因此正常的服务mysql启动命令不能直接在Dockerfile中使用
解决方案:为了保持进程正常运行:
通常有三种方式的Dockerfile
>使用service命令,并附加非end命令后,像tail -F
CMD service mysql start && tail -F /var/log/mysql/error.log
>或使用前台命令来执行此操作
CMD /usr/bin/mysqld_safe
>或将脚本包装到start.sh中并将其放在最后
CMD /start.sh
对于启动用户,不推荐supervisord,最好对一个容器使用单个服务。