如何将配置导入dockerfile。

时间:2017-07-04 09:54:19

标签: docker environment-variables docker-compose

我有一个docker-compose.yaml文件,然后是dockerfiles。现在,我不想在这个docker-compose / dockerfile中写下所有的主机,端口,密码。相反,我想将所有这些配置保存在不同的文件中。我知道,一半的需求可以通过使用.env文件来实现,我可以保存我的环境变量,但是最好将所有配置保存在单个文件(main.cfg)中,这可以被其他组件使用。

1 个答案:

答案 0 :(得分:0)

您可以使用卷将文件或整个文件夹共享到docker服务。以下是与docker共享数据库的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容器,并且也可以在容器内部/docker-entrypoint-initdb.d访问。您也可以通过提供确切的文件名来安装单个文件。例如:

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

由于我共享了一个数据库,您可以共享一个配置文件并将其放在Docker中所需的确切位置。