[英]docker use common configuration in dockerfile and docker-compose.yml
我正在使用許多Docker容器。 我想為其中一個分配一個靜態IP,並在dockerfile
中使用該靜態IP。
我想使用某種配置文件,例如.env
文件,並在dockerfile
和docker-compose.yml
使用它。
我想辦法。 只是:
.env
文件,例如ip_server=172.20.0.2
。 .env
docker-compose.yml
使用.env
變量,並將其作為參數傳遞給docker-compose.yml
image:
services:
client
build:
context: ./client
args:
- IP_SERVER=${ip_server}
dockerfile
使用它
ARG IP_SERVER
ENV IP_SERVER=${IP_SERVER}
引用:
-docker-compose env文件
-docker-compose args
-dockerfile環境
您可能不想做任何一件事情。
如果您在同一Docker Compose設置中運行兩個容器,則Compose將為您創建一個私有Docker網絡,一個容器可以使用其容器名稱(或docker-compose.yml
中的塊名稱)訪問另一個容器。作為主機名。 那應該消除對靜態IP地址的需要。
其次,像這樣對主機名或IP地址進行硬編碼會使重用設置變得更加困難。 作為一個非常基本的示例,在Docker外部進行開發時,您可以在同一主機上運行客戶端和服務器,並使用localhost
作為主機名,但是在Docker Compose設置中,它們將位於不同的容器中並使用不同的主機名。 這也意味着您永遠無法將docker push
映像到注冊表,這是某些常見部署方案所必需的。 環境變量是從外部傳遞此變量的常用方法。
完成此操作docker-compose.yml
可能類似於:
version: '3'
services:
server:
build:
context: ./server
client:
build:
context: ./client
env:
SERVER_URL: 'http://server/'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.