2017-07-04 48 views
0

我有一個docker-compose.yaml文件,然後是dockerfiles。現在,我不想在此docker-compose/dockerfile中編寫所有主機,端口和密碼。相反,我想將所有這些配置保存在不同的文件中。我知道,通過使用.env文件可以實現一半的需求,在那裏我可以保留我的環境變量,但是將所有配置保存在單個文件(main.cfg)中會很好,可以由其他組件使用。如何將配置導入到dockerfile。

+0

如果你真的想在主機上的配置文件被docker容器在運行時讀取,你可以創建一個包含該文件的卷 – Joel

+0

@Joel:謝謝Joel。但那麼如何從配置文件中讀取它?作爲環境變量? – user208859

回答

0

您可以使用卷將文件或整個文件夾共享到泊塢窗服務。這裏是這股數據庫以泊塢窗一個MySQL的示例:

version: '3' 
services: 
    mysql-database: 
    image: mysql 
    container_name: mysql-database 
    volumes: 
     - ./mysql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d 
    env_file: 
     - .env 
    ports: 
     - 3306:3306 

的目錄結構如下:

BaseDirectory 
|____docker-compose.yml 
| mysql 
| |____docker-entrypoint-initdb.d 
|   |____sqldb1.gz 
|   |____sqldb2.gz 

在上面的例子中,所有的內部docker-entrypoint-initdb.d從主機文件,共享與碼頭集裝箱,並且可以從集裝箱內訪問,也可以在/docker-entrypoint-initdb.d。您也可以通過提供確切的文件名來掛載單個文件。例如:

volumes: 
    - ./mysql/docker-entrypoint-initdb.d/sqldb1.gz:/docker-entrypoint-initdb.d/sqldb1.gz 

因爲我共享了一個數據庫,所以您可以共享一個配置文件,並將它放置在docker中想要的確切位置。