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