首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Docker Container中的文件

覆盖Docker Container中的文件
EN

Stack Overflow用户
提问于 2020-07-11 00:26:21
回答 1查看 66关注 0票数 1

我让jira8在一个docker容器中运行:

代码语言:javascript
复制
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)

代码语言:javascript
复制
  volumes:
    - /Users/mles/git/jira-migration/config-files/server-localhost-8.10.xml:/opt/atlassian/jira/conf/server.xml:ro

但我在主机上的文件仍然会被覆盖。

有没有更好的方法来做这件事?f.ex。是否将挂载的文件设为只读并始终覆盖停靠容器中存在的文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-11 02:11:14

您需要使用此映像的本机设置系统,或者对其进行大量补丁。

该映像有一个Docker Hub page (通常,对于非库映像,为https://hub.docker.com/r/owner/image )。链接到a Bitbucket repo的Docker打包源代码。主容器进程是an entrypoint.py script,它无条件地执行以下操作:

代码语言:javascript
复制
gen_cfg('server.xml.j2', f'{JIRA_INSTALL_DIR}/conf/server.xml')

其中,该gen_cfg function将通过从所引用的Jinja2源文件呈现该文件来覆盖命名的输出文件。

Docker Hub页面列出了大量的环境变量设置。如果您设置了这些设置,容器将为您生成自己的server.xml文件。如果可以确定注入的确切内容,还可以使用绑定挂载来覆盖server.xml.j2源文件。

(通常,绑定挂载在启动时总是将内容推送到容器中,并且从不从镜像中提取内容。这个镜像在生成自己的配置时有点不寻常,这就是为什么主机文件会被覆盖;这不是Docker自然会发生的事情。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62838513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档