Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行docker映像时,需要为每个docker容器传递不同的环境变量值_Java_Docker_Nginx_Kubernetes_Dockerfile - Fatal编程技术网

Java 运行docker映像时,需要为每个docker容器传递不同的环境变量值

Java 运行docker映像时,需要为每个docker容器传递不同的环境变量值,java,docker,nginx,kubernetes,dockerfile,Java,Docker,Nginx,Kubernetes,Dockerfile,我是docker的新手,在一个小场景中工作过。情况是,在使用docker run命令创建每个docker容器的过程中,我需要传递不同的值 FROM nginx:alpine ARG files ENV files=$files COPY $files /usr/share/nginx/html 用于使用docker build构建docker映像-t示例用户界面命令 在运行docker容器时,我传递了一个html文件,如下所示 docker run -p 8090:80 -e files=s

我是docker的新手,在一个小场景中工作过。情况是,在使用docker run命令创建每个docker容器的过程中,我需要传递不同的值

FROM nginx:alpine
ARG files 
ENV files=$files
COPY $files /usr/share/nginx/html
用于使用
docker build构建docker映像-t示例用户界面
命令

在运行docker容器时,我传递了一个html文件,如下所示

docker run -p 8090:80 -e files=sample1.html sample-ui
现在我刚刚登录了浏览器,它工作正常,我可以看到sample1.html网页

现在,我将在相同的docker图像上创建另一个容器,使用不同的html页面作为环境值

docker run -d -p 8091:80 -e files=sample2.html sample-ui
但是现在第二个容器也只有sample1.html,而没有sample2.html。手段不起作用。他正在工作

任何人都可以帮助我解决此问题。

来自Dockerfile

COPY $files /usr/share/nginx/html
使用Dockerfile构建docker映像时,将执行此
COPY
命令

当我使用上面的Dockerfile构建docker映像时,它将我当前文件夹的所有文件和目录复制到
/user/share/nginx/html
文件夹中。 要确保运行以下命令:

docker exec -it <container id> sh
/ # ls /user/share/nginx/html
docker exec-it sh
/#ls/user/share/nginx/html
现在我刚刚登录了浏览器,它工作正常,我可以看到sample1.html网页

因此,在您构建图像时,可能存在
sample1.html
字段。这就是为什么上面的url有效


sample2.html
不存在,因此它不起作用

现在我在docker容器创建过程中成功地传递了环境变量值(docker运行图像名称)

docker run-d-p8091:80-e“files=sample2.html”示例ui

事实上,我们需要给双报价如上所述


通过这种方式,我可以使用动态html文件创建不同的docker容器

复制步骤在生成图像时执行,而不是在运行图像时执行。@Pankaj感谢您的回复。我仍然有一个问题,比如在第一个容器创建期间,副本如何完美地工作。但在第二个容器创建过程中,它不起作用。如果复制命令不适用,是否有其他方法实现此目的。你知道吗?我的要求是,在每个docker容器创建过程中,我需要传递不同的值。请让我知道如果你有任何想法,因为很可能是文件存在于你的形象;你可以调试它;我是说你可以进去看看。因此,如果您只是这样做——“docker run-it sample ui sh”,您将在您的容器中,然后可以检查路径-/usr/share/nginx/html中存在的内容。您的要求似乎与构建图像以将代码和依赖项捆绑在一起的概念背道而驰@谢谢,在使用docker run命令创建时,有没有办法将不同的环境值传递给每个容器。忘记这个复制命令,我只需要传递不同的值