首页 > 解决方案 > 传递 --env 变量现在可以使用 ENTRYPOINT

问题描述

我有一个基本的 docker 镜像,我在上面构建自己的镜像。我没有基础镜像的 Dockerfile。

基本上,基础镜像需要两个--env arg,一个接受他们的许可,一个选择应该在容器中激活哪个框架。ENTRYPOINT在没有as的情况下运行我的容器没有问题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"]

我什至尝试过~/.bashrcARG2..

标签: docker

解决方案


使用以下命令签出ENTRYPOINT基本映像:

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

(替换BASEIMAGE为基础镜像的名称。)

如果您ENTRYPOINT将基本映像的命令包含在自己的ENTRYPOINT.


推荐阅读