如何将配置导入dockerfile。

如何将配置导入dockerfile。,docker,environment-variables,docker-compose,Docker,Environment Variables,Docker Compose,我有一个docker-compose.yaml文件,然后是dockerfiles。现在,我不想在docker compose/dockerfile中写入所有主机、端口和密码。相反,我希望将所有这些配置保存在不同的文件中。我知道,一半的需求可以通过使用.env文件来实现,我可以在其中保存我的环境变量,但是最好将所有配置保存在一个文件(main.cfg)中,其他组件可以使用该文件 您可以使用卷将文件或整个文件夹共享给docker服务。下面是一个mysql示例,它与docker共享一个数据库: ver

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

您可以使用卷将文件或整个文件夹共享给docker服务。下面是一个mysql示例,它与docker共享一个数据库:

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中您想要的确切位置。

如果您确实希望主机上的配置文件在运行时被docker容器读取,您可以创建一个包含该文件的卷file@Joel:谢谢你,乔。但是如何从配置文件中读取它呢?作为环境变量?