我让jira8在一个docker容器中运行:
jira8:
container_name: jira8
expose:
- "8080"
image: atlassian/jira-software:8.10
networks:
atlassian-network:
aliases:
- jira8
ports:
- "8081:8080"
restart: always
volumes:
- /Users/mles/git/jira-migration/config-files/server-localhost-8.10.xml:/opt/atlassian/jira/conf/server.xml每次我重新启动停靠容器时,/Users/mles/git/jira-migration/config-files/server-localhost-8.10.xml文件都会被jira8停靠容器中/opt/atlassian/jira/conf/server.xml中的文件覆盖。
我可以-在容器启动后-手动将server-localhost-8.10.xml复制到docker容器中,覆盖默认的server.xml。
我尝试挂载只读(:ro)
volumes:
- /Users/mles/git/jira-migration/config-files/server-localhost-8.10.xml:/opt/atlassian/jira/conf/server.xml:ro但我在主机上的文件仍然会被覆盖。
有没有更好的方法来做这件事?f.ex。是否将挂载的文件设为只读并始终覆盖停靠容器中存在的文件?
发布于 2020-07-11 02:11:14
您需要使用此映像的本机设置系统,或者对其进行大量补丁。
该映像有一个Docker Hub page (通常,对于非库映像,为https://hub.docker.com/r/owner/image )。链接到a Bitbucket repo的Docker打包源代码。主容器进程是an entrypoint.py script,它无条件地执行以下操作:
gen_cfg('server.xml.j2', f'{JIRA_INSTALL_DIR}/conf/server.xml')其中,该gen_cfg function将通过从所引用的Jinja2源文件呈现该文件来覆盖命名的输出文件。
Docker Hub页面列出了大量的环境变量设置。如果您设置了这些设置,容器将为您生成自己的server.xml文件。如果可以确定注入的确切内容,还可以使用绑定挂载来覆盖server.xml.j2源文件。
(通常,绑定挂载在启动时总是将内容推送到容器中,并且从不从镜像中提取内容。这个镜像在生成自己的配置时有点不寻常,这就是为什么主机文件会被覆盖;这不是Docker自然会发生的事情。)
https://stackoverflow.com/questions/62838513
复制相似问题