当前正在保存 运行 redmine docker 更改以重用

Saving currently running redmine docker changes to reuse

我是 docker 的新手,并且已经 运行 建立了一个生产红矿 docker,我对其进行了更改(主要是 js,css 和 html 稍微定制一下)。 我对它现在的样子很满意,但是,由于我在开始时缺乏知识,我错过了一些我现在想添加的东西,比如邮件服务器,并将我的整个应用程序指向一个子域而不是当前打开的主要。 这是我的问题:

我先 运行 图片有:

docker run -p 80:80 --name=redmine --rm --link=mysql-redmine:mysql /
    --volume=/srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.4.2

从那以后我所做的就是 docker restart 查看 HTML 更改,但我对重新 运行 没有信心,因为它不会保存这些更改,我说得对吗?

每次我 运行 它时是否需要环境变量,或者有一种方法可以将它们保存在我的图像中以简单地 运行 图像总是在相同的端口和 MySQL D B?我查看了 运行ning docker 文件并且 database.yml 在第一个 运行 期间传递了正确的配置,但我真的不知道它们是否已保存或者下一个 运行.

最后一个:我知道我可以将此图像提交到自定义图像以保存一些更改,但同样,我真的不知道哪些已保存,哪些未保存。 ¿运行 上的环境是否在提交时保存?

希望您能提供帮助,文档在这方面并不是很清楚,也不是很广泛,解决方法通常基于非常具体的案例,并不能真正回答我的所有问题。

此外,我知道 Docker 个文件,但对它和 运行 命令有同样的疑问。

谢谢大家!

如果要保留对 HTML 文件和环境变量的更改,最好使用 Dockerfile 创建新映像。

FROM sameersbn/redmine:3.4.2
COPY modified.html /path/to/original.html
ENV SOME_VARIABLE=value

然后构建映像 docker build -t local/redmine:3.4.2 . 并 运行 它 docker run ... local/redmine:3.4.2

另一种解决方案是 运行 原始图像并使用卷覆盖 html 文件:docker run ... -v /path/to/modified.html:/path/to/original.html sameersbn/redmine:3.4.2.

在我看来,后者是更好的解决方案,除非您需要分发包含已编辑 html 内容的图像。如果你觉得写长命令很麻烦,你可以把它写成简单的脚本或者最好写一个 docker-compose.yml 文件和 运行 docker-compose up.

您对容器所做的更改,例如:添加电子邮件服务器等新包,添加 vi/nano 或其他包不会持久,这意味着每次您stopstart 容器,您的更改将 lost 并且您将不得不重新进行。

要使它们持久化,您必须创建一个 Dockerfile,您可以在其中指定 FROM 指令,例如:

FROM "sameersbn/redmine:3.4.2"

并且在此 Dockerfile 中,您必须指定其他包,例如:

RUN apt-get update && apt-get install xyz

这将安装所需的包

然后您必须构建图像:

docker build -t my_new_image:1.0.0 .

这将创建一个安装了所需软件包的新映像,这样您就不会丢失它们。

此外,您可以使用 COPYADD 命令添加 HTML 文件,或者像您目前所做的那样使用 VOLUMES

最后,每次都必须始终传递 ENV 变量,一个好的解决方案是使用 docker-compose file,它将包含 运行 容器的所有内容。

希望对您有所帮助。