簡體   English   中英

覆蓋 Docker 容器中的文件

[英]Overwrite file in Docker Container

我在 docker 容器中運行 jira8:

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

Everytime I restart the docker container, the file /Users/mles/git/jira-migration/config-files/server-localhost-8.10.xml gets overwritten with the file present at /opt/atlassian/jira/conf/server.xml在 jira8 docker 容器中。

我可以 - 在容器啟動后 - 將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

但我在主機上的文件仍然被覆蓋。

有一個更好的方法嗎? 前任使安裝的文件只讀並始終覆蓋 docker 容器中存在的文件?

您需要使用此映像的本機設置系統,或對其進行大量修補。

該圖像有一個Docker Hub 頁面(通常, https://hub.docker.com/r/owner/image用於非庫圖像)。 它鏈接到Bitbucket 存儲庫,用於其 Docker 封裝源。 主容器進程是一個無條件執行的entrypoint.py腳本

gen_cfg('server.xml.j2', f'{JIRA_INSTALL_DIR}/conf/server.xml')

其中gen_cfg function將通過從引用的 Jinja2 源文件中渲染來覆蓋命名的 output 文件。

Docker Hub 頁面列出了大量的環境變量設置。 如果您設置了這些,容器將為您生成自己的server.xml文件。 如果你能弄清楚到底注入了什么,你也可以使用綁定掛載來覆蓋server.xml.j2源文件。

(通常,在啟動時綁定掛載總是將內容推送到容器中,並且從不從鏡像中提取內容。這個鏡像在生成自己的配置時有點不尋常,這就是主機文件被覆蓋的原因;這不是自然發生的事情與 Docker。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM