如何解决docker-compose将环境变量传递到容器中可能吗?
码头工人确实让我感到困惑。 我正在尝试使用“ environments”变量以及.env文件将变量传递到将要创建的容器中。遗憾的是没有成功。
我的设置是什么
docker-compose.yml
# dockerfile version 3.8 -> 18.07.2020
version: "3.8"
# services basicly means scalable amount of containers
services:
testalpine:
image: testenvalpine
build:
context: .
dockerfile: test-dockerfile
args:
- DB_NAME=nextcloud
- DB_USER=nextcloud
# todo only use https and self sign certificate
ports:
- "80:80"
environment:
- env1=hello
- env2=world
networks:
- nextcloudnetwork
# todo include redis and mariadb
networks:
nextcloudnetwork:
# std driver seems to be overlay?
driver: overlay
Dockerfile: 测试dockerfile
FROM alpine:latest
LABEL maintainer="xddq <donthavemyownemailyet:(((>"
ARG DB_NAME=default
ARG DB_USER=default
ENV env1=dockerfile env2=$DB_NAME
ENTRYPOINT [ "sh","-c",\
"echo DB_NAME: $DB_NAME DB_USER: $DB_USER env1: $env1 env2: $env2" ]
我的.env文件
DB_NAME=nextcloud
DB_USER=nextcloud
我所做的输出预期:
DB_NAME:nextcloud DB_USER: nextcloud env1: hello env2:nextcloud
我得到的输出:
DB_NAME: DB_USER: env1: dockerfile env2: nextcloud
这是否意味着docker-compose中的“ .env”和ENV变量对于将要创建的容器内的env变量完全没有用?我的意思是我只能使用ARG变量得到任何结果。 :/
问候
解决方法
.env不会自动传递到容器,您需要使用env_file:
Explaination here在docker-compose.yml中声明它。不确定为何不是这种情况,应该用docker-compose文件中的dockerfile覆盖dockerfile中的环境。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。