簡體   English   中英

docker在dockerfile和docker-compose.yml中使用通用配置

[英]docker use common configuration in dockerfile and docker-compose.yml

我正在使用許多Docker容器。 我想為其中一個分配一個靜態IP,並在dockerfile中使用該靜態IP。
我想使用某種配置文件,例如.env文件,並在dockerfiledocker-compose.yml使用它。

我想辦法。 只是:

  1. 將配置添加到.env文件,例如ip_server=172.20.0.2
  2. .env docker-compose.yml使用.env變量,並將其作為參數傳遞給docker-compose.yml image:

    services:
      client
      build:
        context: ./client
        args:
          - IP_SERVER=${ip_server}
  1. 然后像這樣在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.

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