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变量得到任何结果。 :/

问候

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)