jag*_*r91 6 docker docker-compose
我的 Docker.env文件有问题。当我在我的 Docker 文件夹中(我有docker-compose.yml和.env文件的地方)时,环境变量可以正常读取.env。但是,当我docker-compose -f ./docker/docker-compose.yml up --build -d在更高级别的目录中运行时,会收到如下警告:
The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?我尝试设置env_file属性docker-compose.yml并使用其他文件编码(我在 Google 中找到了这个解决方案),但仍然没有。
这是我的配置:
version: '2'
services:
mysql:
container_name: mysql
image: mysql
volumes:
- "./.data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
Run Code Online (Sandbox Code Playgroud)
.env 文件:
# MySQL
MYSQL_ROOT_PASSWORD=test
MYSQL_DATABASE=test
MYSQL_USER=test
MYSQL_PASSWORD=test
Run Code Online (Sandbox Code Playgroud)
正如 Tagc 所说,这是 docker-compose 与文件的记录行为.env,它必须位于您运行的目录中docker-compose。您不能用于env_file此目的,因为这是设置不同的环境。该.env文件设置用于解析 yml 文件的环境docker-compose(因此无法从文件内部设置,这将是循环依赖),同时将env_file环境变量注入正在运行的容器中。
如果由于某种原因无法 cd 进入该文件夹或移动 .env 文件,您可以使用以下命令手动获取该文件:
env $(cat docker/.env | grep -v ^# | xargs) \
docker-compose -f docker/docker-compose.yml up --build -d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |