2017-07-04 15 views
0

私はdocker-compose.yamlファイルを持っていて、次にdockerfilesを持っています。今、私は、このドッカーの作成/ドッカーファイルにすべてのホスト、ポート、パスワードを書きたいとは思わない。むしろ、これらの設定をすべて別のファイルに保存したいと考えています。私は、必要条件の半分は環境変数を保持できる.envファイルを使用することで達成できますが、すべての設定を1つのファイル(main.cfg)に保存すると良いでしょう。これは他のコンポーネント。設定をdockerfileにインポートする方法。

+0

ホスト上の設定ファイルを、実行時にドッカーのコンテナで読み取る場合は、そのファイルを含むボリュームを作成できます。 – Joel

+0

@Joel:Thanks 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 

データベースを共有しているので、同様に設定ファイルを共有して、ドッカー内の正確な場所に配置できます。

関連する問題