我需要一些在Docker容器中使用MySQL的帮助。我认为Docker的全部意义在于隔离沙盒中的进程并使它们像正常进程一样运行 - 我没有获得此功能。
每当我运行一个我自己的图像构建的MySQL容器时,它运行2秒钟,然后停止。尝试docker run -i -t <imageid>
给了我这个:
root@CenturionX:/home/centurionx/Code/Git/gdms-rcon# docker run -i -t e2d
150221 05:25:21 mysqld_safe Logging to '/var/lib/mysql/28123b6d1dad.err'.
150221 05:25:21 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
150221 05:25:21 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
root@CenturionX:/home/centurionx/Code/Git/gdms-rcon#
为什么守护程序不能保持打开状态?我有Dockerfile
,看起来像:
# This docker file constructs a MySQL database instance
FROM mysql:latest
ADD . /gdms-rcon/mysql
WORKDIR /gdms-rcon/mysql
ENTRYPOINT ["/usr/bin/mysqld_safe"]
EXPOSE 3306
一个fig.yml
文件可以帮助我自动化构建过程:
mysql:
build: .
volumes:
- .:/gdms-rcon/mysql
working_dir: /gdms-rcon/mysql
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=mydb
- MYSQL_ROOT_PASSWORD=mypassword
答案 0 :(得分:4)
mysql official image有一个/entrypoint.sh
脚本,在启动映像时需要运行该脚本才能正确配置和运行容器。似乎运行/usr/bin/mysqld_safe
而不是正确配置mysql并且进程mysqld_safe
结束,因此容器也结束。
尝试替换ENTRYPOINT
:
# This docker file constructs a MySQL database instance
FROM mysql:latest
ADD . /gdms-rcon/mysql
WORKDIR /gdms-rcon/mysql
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 3306