我编写了一个在ubuntu映像上运行mysql的dockerfile。 Dockerfile是:
FROM ubuntu
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
RUN sed -i '43s/.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
EXPOSE 3306
ENTRYPOINT service mysql start && bash
如果我跑:
docker run -dit mysql-server
构建容器后,一切正常,我的Apache / PHP容器可以与之通信。但是,如果我在附加卷(docker run -dit -v ~/vol/:/var/lib/mysql/ mysql-server
)的情况下运行它,容器将在30秒后停止运行(我非常确定每次都有相同的时间)。
有没有人知道我可以保持容器并安装卷的方法?我以前从来没有遇到过这个问题,也无法在网上找到其他任何东西(我已经看了一会儿)。感谢。
答案 0 :(得分:0)
这是因为您正在使用/var/lib/mysql
的内容屏蔽~/vol
的内容,我假设该内容为空。因此,MySQL服务器无法启动,因为它缺少数据库文件。我个人会在您的自定义实现上使用官方图片,因为它会处理您所寻找的here is the link to Dockerhub。如果您需要更改,它可以选择安装自定义my.cnf
文件。但是,默认情况下,图像会绑定到0.0.0.0。有关配置选项,请参阅Dockerhub链接。
希望这有帮助
迪伦