我有以下Dockerfile:

FROM jboss/wildfly
USER jboss
RUN mkdir -p /opt/jboss/wildfly/standalone/log
VOLUME /opt/jboss/wildfly/standalone/log
CMD /bin/bash
# CMD true

生成的图像以docker run -ti --name=data_volume data/volume开头。下一个Dockerfile
FROM jboss/wildfly
RUN sed -i 's|<file relative-to="jboss.server.log.dir"
    path="server.log"/>|\<file relative-to="jboss.server.log.dir"
    path="\${jboss.host.name}-server.log"/\>|'
    /opt/jboss/wildfly/standalone/configuration/standalone.xml

覆盖生成的jboss的日志记录,以记录到日志记录目录中的“servername” -server.log。当我使用docker run -ti --name=wild-01 --volumes-from=data_volume my/wildflydocker run -ti --name=wild-02 --volumes-from=data_volume my/wildfly启动生成的图像时,我的data_colume容器中有两个日志文件。很好很好

我想将卷指向主机上的目录。 / var / log / wildfly。

运行data/volume时如何在Dockerfiles中实现此功能而不使用-v参数

在此先多谢

最佳答案



从Dockerfile中删除所有提到的卷...使用启动容器

docker run -d -v /var/log/wildfly:/var/log/wildfly  your-image-name

然后在您的代码中只需引用正常路径
/var/log/wildfly

使用docker run -ti启动容器的语法使容器 shell 具有交互性,而-d是将其旋转为后台运行的守护程序的正常模式

关于docker - Docker Volume指向Dockerfile中的主机目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47092564/

10-16 23:57