Docker,一个或多个未消耗的构建参数

前端之家收集整理的这篇文章主要介绍了Docker,一个或多个未消耗的构建参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用自定义环境变量构建Oracle WebLogic Docker镜像

$docker build -t 12213-domain --build-arg ADMIN_PORT=8888 --build-arg ADMIN_PASSWORD=wls .

但是我在构建日志中收到以下警告

[Warning] One or more build-args [ADMIN_PASSWORD ADMIN_PORT] were not consumed

这是我正在尝试构建的图像的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 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"]

我正在Windows上运行docker-toolBox,而docker版本则是

$docker --version
Docker version 18.03.0-ce,build 0520e24302
最佳答案
ARG

ARG 

The ARG instruction defines a variable that users can pass at
build-time to the builder with the docker build command using the
–build-arg = flag. If a user specifies a build argument that was not defined in the Dockerfile,the build outputs a
warning.

[Warning] One or more build-args [foo] were not consumed.

https://docs.docker.com/engine/reference/builder/#arg

使用ARG变量

You can use an ARG or an ENV instruction to specify variables that are
available to the RUN instruction. Environment variables defined using
the ENV instruction always override an ARG instruction of the same
name. Consider this Dockerfile with an ENV and ARG instruction.

Unlike an ARG instruction,ENV values are always persisted in the
built image. Consider a docker build without the –build-arg flag:

ARG仅在构建Docker镜像(RUN等)时可用,而不是在创建图像并从中启动容器(ENTRYPOINT,CMD)之后.您可以使用ARG值来设置ENV值以解决此问题.

所以你需要做这样的事情

# Assign any default value to avoid any error. do not worry your build flag will override this.

    ARG ADMIN_PORT=some_default_value 

    ENV ADMIN_PORT=${ADMIN_PORT}

https://vsupalov.com/docker-arg-env-variable-guide/

原文链接:https://www.f2er.com/docker/436974.html

猜你在找的Docker相关文章