这几天我在学习 docker,从自己构建 mysql 镜像开始。
Dockerfile:
FROM centos
MAINTAINER Michael
ENV REFRESHED_AT 2016-07-29
RUN yum install -y mysql mariadb-server
VOLUME /var/lib/mysql
ENTRYPOINT ["/usr/libexec/mysqld", "--user=root"]
EXPOSE 3306
Run Code Online (Sandbox Code Playgroud)
docker 运行命令
docker run -d --name mysql -v /root/docker/mysql/data:/var/lib/mysql -p 3306:3306 michael/mysql
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误,因为我必须先执行mysql_install_db以初始化数据库。但是我无法添加RUN mysql_install_dbDockerfile,因为我想Volume用作外部数据存储。
那么我该怎么做呢?
我知道有一个名为mysql. 我只是想这样做作为练习。
更新:感谢@Pieter。我最终通过使用他的解决方案做到了这一点,该解决方案提供了另一个entrypoint.sh组合 init 和 start 脚本,然后将其作为 Dockerfile 中的 ENTRYPOINT :
FROM centos
MAINTAINER Michael
ENV REFRESHED_AT 2016-07-29
RUN yum install -y mysql mariadb-server
VOLUME /var/lib/mysql
COPY entrypoint.sh /usr/local/bin/
ENTRYPOINT …Run Code Online (Sandbox Code Playgroud) docker ×1