[英]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.