FROM mysql:5.7
ADD snapshots/default.sql /tmp/default.sql
# Using separate data folder outside of mysql image declared volume
# https://github.com/moby/moby/issues/3465
# https://medium.com/@stevenlandow/persist-share-dev-mysql-data-in-a-docker-image-with-commit-f9aa9910be0a
RUN mkdir /var/lib/mysql-no-volume
RUN set -exu ;\
MYSQL_ROOT_PASSWORD=root docker-entrypoint.sh --datadir /var/lib/mysql-no-volume &\
MYSQL_PID=$! &&\
timeout 22 bash -c 'until printf "" 2>>/dev/null >>/dev/tcp/$0/$1; do sleep 1; done' localhost 3306 &&\
mysql -proot -e 'create database `mydb` collate "utf8mb4_general_ci"' &&\
mysql -proot mydb < /tmp/default.sql &&\
kill $MYSQL_PID &&\
tail --pid=$MYSQL_PID -f /dev/null # Using tail to wait for PID to end https://unix.stackexchange.com/questions/427115/listen-for-exit-of-process-given-pid
# Using separate data folder outside of mysql image declared volume
# https://github.com/moby/moby/issues/3465
# https://medium.com/@stevenlandow/persist-share-dev-mysql-data-in-a-docker-image-with-commit-f9aa9910be0a
CMD ["--datadir", "/var/lib/mysql-no-volume"]
3条答案
按热度按时间aelbi1ox1#
更新(2018年4月):在“How can I edit an existing docker image metadata?“中,Guido U. Draheim提出了
gdraheim/docker-copyedit
,一个可以编辑docker镜像元数据的python脚本。可以删除或覆盖映像元数据(包括卷)的。
该命令将是:
字符串
自2018年以来,相同的问题现在包括(来自Aalex Gabi):
为了用嵌入式MySQL数据库快照构建CI映像,我最终使用了这个解决方案:来自Steven Landow的“Persist & share dev data in a Docker image with
commit
“。型
gfttwv5a2#
目前看来这是不可能的,尽管有很多人请求该功能,有人可能正在努力。这期Github讨论的主题是:
https://github.com/moby/moby/issues/3465
v09wglhw3#
这是一个有点激烈,但允许有人从头开始重新定义一切,作为变通方法暗示。
字符串
这将删除一切,你将不得不再次暴露环境,端口,卷,入口点,命令和任何你想暴露的东西。