现在,传递--env变量可与ENTRYPOINT

时间:2018-10-04 12:54:38

标签: docker

我有一个基本的docker映像,我将以此为基础构建自己的映像。我没有基础映像的Dockerfile。

基本上,基本映像需要两个--env arg,一个用于接受其许可证,另一个用于选择应在容器中激活哪个框架。我可以在没有ENTRYPOINT且没有docker run -it -p xxxx:xxxx --env ARG1=x --env ARG2=y <imageID> /bin/bash的情况下运行容器,然后运行将在容器内的ENTRYPOINT中运行的脚本。完美无瑕。但!我想使它与ENTRYPOINT ["/bin/bash", "-c", "myscript.sh"]一起使用,这样我每次运行它时都不必进入容器。当我使用自己的入口点时,就像容器忽略了我的输入--env ARG1=x --env ARG2=y

是不是基础映像有自己的ENTRYPOINT寻找这些环境变量?有什么方法可以确保基本图像静止图像运行其启动脚本,然后再运行?

我的Dockerfile

FROM base-img

USER root

RUN  apt-get update -y &&  apt-get upgrade -y \
        && apt-get install -y nano \
                apache2 \
                iputils-ping \
                vim \
                emacs


USER user1

ENV PATH="/opt/anaconda3/bin:${PATH}"

RUN conda install jupyter notebook -y

COPY jupyter_notebook_config.py /home/user1/.jupyter/

COPY run-jupyter.sh /home/user1

WORKDIR /home/user1

#ENTRYPOINT ["/bin/bash", "-c", "/home/user1/myscript.sh"]

我什至尝试在~/.bashrc中回显它们,但没有成功... 如上所述,我担心基本映像中的某些脚本会在启动时运行,具体取决于ARG2设置为什么。

2 个答案:

答案 0 :(得分:1)

使用以下方法检出基础图像的ENTRYPOINT

docker inspect --format='{{.Config.Entrypoint}}' BASEIMAGE

(用基本图像的名称替换BASEIMAGE。)

如果您在自己的ENTRYPOINT中包含基本映像的ENTRYPOINT命令,则可能会起作用。

答案 1 :(得分:0)

  

难道是基本映像有其自己的ENTRYPOINT在寻找那些环境变量?有什么方法可以确保基本图像静止图像运行其启动脚本,然后在之后运行我的图像?

否,图像将只有一个入口点。您在图片中定义的图片将替换父图片中的所有入口点定义。