我想创建一个nginx容器,将本地机器/home/git/html的内容复制到容器/usr/share/nginx/html中。但是,我不能使用卷和装载路径,因为我的kubernetes集群有2个节点。相反,我决定从我的github账户中复制内容。然后我创建了这个dockerfile:
FROM nginx
CMD ["apt", "get", "update"]
CMD ["apt", "get", "install", "git"]
CMD ["git", "clone", "https://github.com/Sonlis/kubernetes/html"]
CMD ["rm", "-r", "/usr/share/nginx/html"]
CMD ["cp", "-r", "html", "/usr/share/nginx/html"]dockerfile构建正确,但是当我使用此镜像应用部署时,容器一直在重新启动。我知道,一旦docker完成了它的工作,它就会关闭,然后部署会重新启动它,从而创建循环。然而,当应用一个基本的nginx图像时,它工作得很好。解决方案是什么?我看到一些解决方案会无限期地运行一个进程来保持容器的存活,但我不认为这是一个合适的解决方案。
谢谢!
发布于 2020-06-25 19:24:32
在构建docker镜像时,您需要使用RUN来执行命令,如@tgogos评论中所述。请参阅refer。
您可以尝试这样的操作:
FROM nginx
RUN apt-get update && \
apt-get install git
RUN rm -rf /usr/share/nginx/html && \
git clone https://github.com/Sonlis/kubernetes/html /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]另外,我建议你在this part of documentation中看看如何优化你的图像,利用缓存层和多阶段构建的优势。
发布于 2020-06-25 20:35:05
感谢@tgogos和@KoopaKiller的帮助,下面是我的Dockerfile的样子:
FROM nginx
RUN apt-get update && \
apt-get install git -y
RUN git clone https://github.com/Sonlis/kubernetes.git temp
RUN rm -r /usr/share/nginx/html
RUN cp -r temp/html /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]kubernete吊舱继续运行。
https://stackoverflow.com/questions/62571627
复制相似问题