我想将.env文件中的环境变量设置到容器中。但是主机环境变量被设置为容器,而不是.env文件。
按如下方式设置文件。
主机# ls -la:
docker-compose.yml
Dockerfile
.env主机环境变量:
JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
LANG="en_US.UTF-8".env文件:
TZ=Asia/Tokyo
LANG=ja_JP.utf8
ORACLE_URL=http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpm
ORACLE_VERSION=8u112
JAVA_HOME=/usr/java/jdk1.8.0_112/jredocker-compose.yml:
version: '2'
services:
oracle8:
build:
context: ./
args:
ORACLE_URL: ${ORACLE_URL}
ORACLE_VERSION: ${ORACLE_VERSION}
environment:
- TZ=$TZ
- LANG=$LANG
- JAVA_HOME=$JAVA_HOME
image: oracle8
privileged: true
tty: true
container_name: oracle8
hostname: oracle8Dockerfile:
FROM centos:latest
ARG ORACLE_URL
ARG ORACLE_VERSION
ARG JAVA_HOME
ENV JAVA_HOME ${JAVA_HOME}
RUN set -x \
&& yum update -y \
&& yum install -y wget tar \
&& yum clean all \
&& wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ${ORACLE_URL} \
&& rpm -ivh jdk-"${ORACLE_VERSION}"-linux-x64.rpm \
&& rm -f jdk-"${ORACLE_VERSION}"-x64.rpm \
&& echo ${JAVA_HOME}
CMD ["tail", "-f", "/dev/null"]然后,docker-compose build & up
host # docker-compose build
host # docker-compose up -d
host # docker exec -it oracle8 bash
oracle8 # export
JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
LANG="en_US.UTF-8"
TZ="Asia/Tokyo"$TZ是从.env文件设置的,因为主机未设置$TZ。$LANG和$JAVA_HOME没有设置为.env文件的"ja_JP.utf8“和"/usr/java/jdk1.8.0_112”,而是主机环境变量"en_US.UTF-8“和"/usr/lib/jvm/java-8-oracle/jre”。
如果我直接在docker-compose.yml中编写它,它是可以的。但我想在.env文件中处理它。
发布于 2019-12-31 04:23:50
发布于 2017-02-07 15:13:34
在外壳中设置的环境变量优先于在.env文件中设置的环境变量:https://docs.docker.com/compose/environment-variables/#/the-env-file
您可以在.env文件中重命名冲突的变量名称,然后在Dockerfile中再次重命名它们
.env
DOCKER_JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"Dockerfile
ARG DOCKER_JAVA_HOME
ENV JAVA_HOME=${DOCKER_JAVA_HOME}https://stackoverflow.com/questions/42062744
复制相似问题