gpt4 book ai didi

Dockerfile、ARG 和 ENV 不工作

转载 作者:行者123 更新时间:2023-12-02 19:06:47 25 4
gpt4 key购买 nike

我有以下 Dockerfile

#Copyright (c) 2014-2017 Oracle and/or its affiliates. All rights reserved.
#
#Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
#
# ORACLE DOCKERFILES PROJECT
# --------------------------
# This Dockerfile extends the Oracle WebLogic image by creating a sample domain.
#
# Util scripts are copied into the image enabling users to plug NodeManager
# automatically into the AdminServer running on another container.
#
# HOW TO BUILD THIS IMAGE
# -----------------------
# Put all downloaded files in the same directory as this Dockerfile
# Run:
# $ sudo docker build -t 12213-domain
#
# Pull base image
# ---------------
FROM oracle/weblogic:12.2.1.3-developer

# Maintainer
# ----------
MAINTAINER Monica Riccelli <monica.riccelli@oracle.com>

ARG DOMAIN_NAME
ARG ADMIN_PORT
ARG ADMIN_NAME
ARG ADMIN_USERNAME
ARG ADMIN_PASSWORD

# WLS Configuration
# ---------------------------
ENV ADMIN_HOST="wlsadmin" \
NM_PORT="5556" \
MS_PORT="8001" \
DEBUG_PORT="8453" \
ORACLE_HOME=/u01/oracle \
SCRIPT_FILE=/u01/oracle/createAndStartWLSDomain.sh \
CONFIG_JVM_ARGS="-Dweblogic.security.SSL.ignoreHostnameVerification=true" \
PATH=$PATH:/u01/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u01/oracle/user_projects/domains/${DOMAIN_NAME:-base_domain}/bin:/u01/oracle

# Domain and Server environment variables
# ------------------------------------------------------------
ENV DOMAIN_NAME="${DOMAIN_NAME}" \
PRE_DOMAIN_HOME=/u01/oracle/user_projects \
ADMIN_PORT="${ADMIN_PORT}" \
ADMIN_USERNAME="${ADMIN_USERNAME}" \
ADMIN_NAME="${ADMIN_NAME}" \
MS_NAME="${MS_NAME:-""}" \
NM_NAME="${NM_NAME:-""}" \
ADMIN_PASSWORD="${ADMIN_PASSWORD}" \
CLUSTER_NAME="${CLUSTER_NAME:-DockerCluster}" \
DEBUG_FLAG=true \
PRODUCTION_MODE=dev

# Add files required to build this image
COPY container-scripts/* /u01/oracle/

#Create directory where domain will be written to
USER root
RUN chmod +xw /u01/oracle/*.sh && \
chmod +xw /u01/oracle/*.py && \
mkdir -p $PRE_DOMAIN_HOME && \
chmod a+xr $PRE_DOMAIN_HOME && \
chown -R oracle:oracle $PRE_DOMAIN_HOME

VOLUME $PRE_DOMAIN_HOME
# Expose Node Manager default port, and also default for admin and managed server
EXPOSE $NM_PORT $ADMIN_PORT $MS_PORT $DEBUG_PORT

USER oracle
WORKDIR $ORACLE_HOME

# Define default command to start bash.
CMD ["/u01/oracle/createAndStartWLSDomain.sh"]

我使用命令构建的
#!/bin/sh
#
#Copyright (c) 2014-2017 Oracle and/or its affiliates. All rights reserved.
#
#Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
#
docker build -t 12213-domain \
--no-cache \
--build-arg DOMAIN_NAME=domain \
--build-arg ADMIN_PORT=7001 \
--build-arg ADMIN_NAME=admin \
--build-arg ADMIN_USERNAME=wlsuser \
--build-arg ADMIN_PASSWORD=wlsuser1 \
.

并获得以下构建日志
$ ./build.sh
Sending build context to Docker daemon 51.71kB
Step 1/17 : FROM oracle/weblogic:12.2.1.3-developer
---> 15ba3f59a9f9
Step 2/17 : MAINTAINER Monica Riccelli <monica.riccelli@oracle.com>
---> Running in ac70adb36a4b
Removing intermediate container ac70adb36a4b
---> fe34e24ffce7
Step 3/17 : ARG DOMAIN_NAME
---> Running in 073a89d7613c
Removing intermediate container 073a89d7613c
---> de10930a27d6
Step 4/17 : ARG ADMIN_PORT
---> Running in d213833315c2
Removing intermediate container d213833315c2
---> 9af410c46028
Step 5/17 : ARG ADMIN_NAME
---> Running in 2baee277da54
Removing intermediate container 2baee277da54
---> a76f3f3d6642
Step 6/17 : ARG ADMIN_USERNNAME
---> Running in 9127852dae20
Removing intermediate container 9127852dae20
---> bb9af74b5804
Step 7/17 : ARG ADMIN_PASSWORD
---> Running in 4d0b1969605b
Removing intermediate container 4d0b1969605b
---> af18d5b6be2d
Step 8/17 : ENV ADMIN_HOST="wlsadmin" NM_PORT="5556" MS_PORT="8001"
DEBUG_PORT="8453" ORACLE_HOME=/u01/oracle SCRIPT_FILE=/u01/oracle/create
AndStartWLSDomain.sh CONFIG_JVM_ARGS="-Dweblogic.security.SSL.ignoreHostname
Verification=true" PATH=$PATH:/u01/oracle/oracle_common/common/bin:/u01/ora
cle/wlserver/common/bin:/u01/oracle/user_projects/domains/${DOMAIN_NAME:-base_do
main}/bin:/u01/oracle
---> Running in 449a28590d90
Removing intermediate container 449a28590d90
---> 2a1ddd961d5c
Step 9/17 : ENV DOMAIN_NAME="${DOMAIN_NAME}" PRE_DOMAIN_HOME=/u01/oracle/use
r_projects ADMIN_PORT="${ADMIN_PORT}" ADMIN_USERNAME="${ADMIN_USERNAME}
" ADMIN_NAME="${ADMIN_NAME}" MS_NAME="${MS_NAME:-""}" NM_NAME="${NM_
NAME:-""}" ADMIN_PASSWORD="${ADMIN_PASSWORD}" CLUSTER_NAME="${CLUSTER_NA
ME:-DockerCluster}" DEBUG_FLAG=true PRODUCTION_MODE=dev
---> Running in 0b01881a1ca4
Removing intermediate container 0b01881a1ca4
---> 7a3cd53ea5a3
Step 10/17 : COPY container-scripts/* /u01/oracle/
---> ce67247c3f7e
Step 11/17 : USER root
---> Running in 61adcafc1226
Removing intermediate container 61adcafc1226
---> f9a781fda963
Step 12/17 : RUN chmod +xw /u01/oracle/*.sh && chmod +xw /u01/oracle/*.py &&
mkdir -p $PRE_DOMAIN_HOME && chmod a+xr $PRE_DOMAIN_HOME && chown -
R oracle:oracle $PRE_DOMAIN_HOME
---> Running in 82b7b258d6f1
Removing intermediate container 82b7b258d6f1
---> 0cda254bc640
Step 13/17 : VOLUME $PRE_DOMAIN_HOME
---> Running in 6650ff8092d3
Removing intermediate container 6650ff8092d3
---> c469ff0ac9a2
Step 14/17 : EXPOSE $NM_PORT $ADMIN_PORT $MS_PORT $DEBUG_PORT
---> Running in a551b6bd5363
Removing intermediate container a551b6bd5363
---> 08253c4d94bd
Step 15/17 : USER oracle
---> Running in f1e6b4e482e9
Removing intermediate container f1e6b4e482e9
---> 85a75641e866
Step 16/17 : WORKDIR $ORACLE_HOME
Removing intermediate container a2b75ecbb0b6
---> 0124a8251ce3
Step 17/17 : CMD ["/u01/oracle/createAndStartWLSDomain.sh"]
---> Running in 1455fdc0d39d
Removing intermediate container 1455fdc0d39d
---> c1c947c2816c
[Warning] One or more build-args [ADMIN_USERNAME] were not consumed
Successfully built c1c947c2816c
Successfully tagged 12213-domain:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Win
dows Docker host. All files and directories added to build context will have '-r
wxr-xr-x' permissions. It is recommended to double check and reset permissions f
or sensitive files and directories.

注意消息
[Warning] One or more build-args [ADMIN_USERNAME] were not consumed

当我启动容器并打印环境时
FMW_PKG=fmw_12.2.1.3.0_wls_quick_Disk1_1of1.zip
CONFIG_JVM_ARGS=-Dweblogic.security.SSL.ignoreHostnameVerification=true
HOSTNAME=74adf82e8092
PRODUCTION_MODE=dev
TERM=xterm
ADMIN_NAME=AdminServer
CLUSTER_NAME=DockerCluster
FMW_JAR=fmw_12.2.1.3.0_wls_quick.jar
USER_MEM_ARGS=-Djava.security.egd=file:/dev/./urandom
DEBUG_FLAG=true
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd
=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;4
2:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:
*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=0
1;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;
31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=0
1;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sa
r=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:
*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01
;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.ti
ff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;3
5:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp
4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:
*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01
;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=
01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.f
lac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;
36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MS_NAME=
DOMAIN_NAME=base_domain
SCRIPT_FILE=/u01/oracle/createAndStartWLSDomain.sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/defa
ult/bin:/u01/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u0
1/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u01/oracle/us
er_projects/domains/base_domain/bin:/u01/oracle
ADMIN_HOST=wlsadmin
DOMAIN_HOME=/u01/oracle/user_projects/domains/base_domain
NM_NAME=
PWD=/u01/oracle
DEBUG_PORT=8453
ADMIN_PORT=7001
JAVA_HOME=/usr/java/default
JAVA_PKG=server-jre-8u*-linux-x64.tar.gz
SHLVL=1
HOME=/u01/oracle
ADMIN_USERNAME=weblogic
NM_PORT=5556
PRE_DOMAIN_HOME=/u01/oracle/user_projects
ADMIN_PASSWORD=
ORACLE_HOME=/u01/oracle
MS_PORT=8001
_=/usr/bin/env

环境变量设置不正确,而是使用了基础镜像中的环境变量。我想覆盖这些变量。

编辑:

问题是 --build-arg未将参数传递给 ARG , 或 ARG未正确绑定(bind)到 ENV .如果我在 ENV 中使用常量字符串,环境被正确覆盖.更有趣的是,如果我不通过 --build-arg致那些 ARG变量,我没有收到任何警告或错误,并且仍然获得完全相同的构建日志。 AFAIK,未绑定(bind) ARG没有默认值应该会引发错误。

这是一个错误吗?我在 Windows 上使用 docker-toolbox,这里是 docker 版本
docker-machine.exe version 0.14.0, build 89b8332
Docker version 18.03.0-ce, build 0520e24302

最佳答案

来自 docs.docker.com :

Environment variables defined using the ENV instruction always override an ARG instruction of the same name



所以解决这个问题的唯一方法是为 ARG 变量使用不同的名称。

您的 ARG 声明中有错字。

我认为将其更改为 ADMIN_USERNAME将解决您的问题。

关于Dockerfile、ARG 和 ENV 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49687724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com