Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker compose文件中设置.env变量时遇到问题_Docker_Docker Compose - Fatal编程技术网

在docker compose文件中设置.env变量时遇到问题

在docker compose文件中设置.env变量时遇到问题,docker,docker-compose,Docker,Docker Compose,我试图遵循Docker文档和其他建议,但仍然在尝试“Docker编写数据库”时出现“变量未设置”错误。有人能检查一下我的.env和yaml文件吗?两者都在同一个目录中,但yml似乎没有读取。env .env: docker-compose.yml: version: '3.7' volumes: db_data: x-shared_environment: &shared_environment LOG_LEVEL: ${LOG_LEVEL:-debug} DATA

我试图遵循Docker文档和其他建议,但仍然在尝试“Docker编写数据库”时出现“变量未设置”错误。有人能检查一下我的.env和yaml文件吗?两者都在同一个目录中,但yml似乎没有读取。env

.env:

docker-compose.yml:

version: '3.7'
volumes:
    db_data:

x-shared_environment: &shared_environment
   LOG_LEVEL: ${LOG_LEVEL:-debug}
   DATABASE_HOST: ${DB_HOST}
   DATABASE_NAME: ${DB_NAME}
   DATABASE_USERNAME: ${DB_USERNAME}
   DATABASE_PASSWORD: ${DB_PASSWORD}

services:
  app:
    image: MY_BLOG_NAME:latest
    build:
      context: .
    environment:
      <<: *shared_environment
      FS_NAME: ${FS_NAME}
      FS_REGION: ${FS_REGION}
    depends_on:
    - db
    ports:
      - '8080:8080'
      
db:
    image: postgres:12.2-apline
    volumes:
        -db_data/var/lib/postrgresql/data/pgdata
    environment:
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_USER: {DB_USERNAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
        POSTGRES_DB: {DB_NAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
    ports:
        -'5432:5432'
版本:“3.7”
卷数:
数据库单元数据:
x-shared_环境:&共享_环境
日志级别:${日志级别:-debug}
数据库\u主机:${DB\u主机}
数据库名称:${DB\u NAME}
数据库_用户名:${DB_用户名}
数据库密码:${DB\u PASSWORD}
服务:
应用程序:
图片:我的博客名称:最新
建造:
上下文:。
环境:

您需要指定
.env
文件的目录,为每个服务添加
env\u文件
配置

例如:

db:
    image: postgres:12.2-apline
    volumes:
        -db_data/var/lib/postrgresql/data/pgdata
    env_file: 
        - ./.env
    environment:
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_USER: {DB_USERNAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
        POSTGRES_DB: {DB_NAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
    ports:
        -'5432:5432'

实际上,我正确地使用了env变量(但也添加了您的建议)。一旦环境变量修复。。。运行docker compose up db时的最后一个错误是:``错误:编写文件。/docker compose.yml'无效,因为:顶级属性“db”无效。此撰写文件的有效顶级部分包括:版本、服务等。。。。注意:为了使env变量正常工作,我将原始版本从3.7更改为3.8(以支持最新的docker v安装)。知道top property db错误是什么吗?注意:我没有为服务添加单独的env_文件,因为我的.env文件包含FS、db和AWS的所有变量。那么“-./.env”就足够了吗?关于顶级数据库错误有什么想法吗?你不能在文件的顶级定义
env_文件
,它应该为每个服务单独配置,我已经解决了。。。“db”需要缩进。。。谢谢你一路上的帮助。
db:
    image: postgres:12.2-apline
    volumes:
        -db_data/var/lib/postrgresql/data/pgdata
    env_file: 
        - ./.env
    environment:
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_USER: {DB_USERNAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
        POSTGRES_DB: {DB_NAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
    ports:
        -'5432:5432'