[英]Problem with .env file setting for docker-compose.yml file
WARNING: The POSTGRES_DB variable is not set. Defaulting to a blank string. WARNING: The POSTGRES_USER variable is not set. Defaulting to a blank string. WARNING: The POSTGRES_PASSWORD variable is not set. Defaulting to a blank string. WARNING: The HOST variable is not set. Defaulting to a blank string. WARNING: The PORT2 variable is not set. Defaulting to a blank string. WARNING: The PORT3 variable is not set. Defaulting to a blank string. WARNING: The PORT1 variable is not set. Defaulting to a blank string.
docker-compose.yml
看起来像这样:
client_app: env_file: - PORTAL_ENVIRONMENT.env image: 'client:latest' build: context: ./ container_name: client depends_on: - db environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/${POSTGRES_DB} - SPRING_DATASOURCE_USERNAME=${POSTGRES_USER} - SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD} - SPRING_JPA_HIBERNATE_DDL_AUTO=update - HOST_NAME=${HOST} - CREDIT_POST=${PORT1} - PRODUCT_POST=${PORT3} ports: - ${PORT2}:8080
(有3个独立的模块,每个看起来都差不多)
PORTAL_ENVIRONMENT.env
看起来像这样:
HOST=localhost PORT1=8089 PORT2=8090 PORT3=8091 POSTGRES_DB=create_credit POSTGRES_USER=user POSTGRES_PASSWORD=pass123
我运行它:
sudo docker-compose up --force-recreate --build
指定服务环境时,您希望 docker-compose 在解析 docker-compose 文件时可以访问这些环境变量(HOST、POSTGRES_DB 等)。 为此,您应该将它们放在一个名为.env
的文件中。 (或者,如果在您运行 docker-compose 时将它们设置在 shell 环境中,那也可以,但您可能希望将它们保存在 a.env 文件中。)
相反,您尝试在 docker-compose 文件中使用env_file:
:。 这指定使用env_file
的服务应查看该文件,然后使用该信息更新其自己的环境。 env_file
类似于environment:
,但它查看的是一个文件。 仅供容器使用,docker-compose不能用它来设置容器的运行方式。
如果您还想将.env
文件中的变量传递到容器中,您可以执行以下操作之一:
environment:
- MY_VARIABLE=${VARIABLE_IN_MY_ENV_FILE}
- MY_VARIABLE_SAFER=${VARIABLE_IN_MY_ENV_FILE:?err}
(如果未设置环境变量, ?err
将导致启动失败,这是一个不错的技巧。)
如果您希望 docker-compose 使用的.env
文件不命名为.env
(也许您出于某种原因喜欢您已有的名称),docker-compose 也有自己的--env-file
命令行选项,您可以使用它指定要使用的.env
文件的路径。
如果您仍然好奇或困惑,您还可以查看 docker-compose环境变量文档页面——其中讨论了 docker-compose 和容器的环境设置,所有这些都在同一个网页中。
还要确保您在 YML 文件所在的正确文件夹中运行 docker-compose,并且您的.env 文件位于与 YML 文件相关的正确路径中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.