Kubernetes吊舱无法部署;docker映像丢失/错位文件?
我正试图通过谷歌云平台了解库伯内特斯。我有一个基于Vue的小应用程序,在本地使用以下Kubernetes吊舱无法部署;docker映像丢失/错位文件?,docker,npm,kubernetes,google-kubernetes-engine,Docker,Npm,Kubernetes,Google Kubernetes Engine,我正试图通过谷歌云平台了解库伯内特斯。我有一个基于Vue的小应用程序,在本地使用以下Dockerfile和dockercompose.yml 在当地建设和实施这个项目非常有效。但是,当使用kompose up创建部署/svc/等时,容器无法正确构建。最终,它以一个崩溃的循环结束 检查日志表明问题在于npm找不到/opt/eyeball/package.json或/opt/eyeball/package lock.json。我很困惑,因为当我构建并推送集群最终要拉下来的映像时,这不是一个问题——这
Dockerfile
和dockercompose.yml
在当地建设和实施这个项目非常有效。但是,当使用kompose up
创建部署/svc/等时,容器无法正确构建。最终,它以一个崩溃的循环结束
检查日志表明问题在于npm
找不到/opt/eyeball/package.json
或/opt/eyeball/package lock.json
。我很困惑,因为当我构建并推送集群最终要拉下来的映像时,这不是一个问题——这些文件就在您希望它们基于我的Dockerfile
的地方。知道为什么会这样吗
Dockerfile
docker-compose.yml
您需要删除
docker compose.yml
文件中的volumes:
块
docker compose.yml中的volumes:
块指示docker获取本地目录的内容并将其装载到容器中,这将隐藏您在Dockerfile
中添加的所有内容。使用Kompose部署时,会将其转换为Kubernetes指令,但由于Kubernetes环境没有本地开发环境,这会导致部署的容器失败。如果删除docker compose.yml中的卷:
块,会发生什么情况?这会用主机系统上的内容覆盖Dockerfile
中安装的所有内容,我猜Kubernetes部署不会这样做。我还将删除自定义的入口点:
行,除非您知道部署规范有类似的内容。这就成功了,非常感谢。关于入口点
你也是对的;需要将其更改为命令
。如果你想把这个作为一个答案,我会把它标记为接受。
FROM node:8-alpine
RUN apk --no-cache --update add gzip
RUN mkdir -p /opt/eyeball
ADD ./package.json /opt/eyeball
ADD ./package-lock.json /opt/eyeball
WORKDIR /opt/eyeball
RUN npm install
ADD . /opt/eyeball
version: '3'
networks:
default:
external:
name: overmind
services:
eyeball:
image: registry.gitlab.com/souldeux/eyeball:latest
environment:
- HOST=0.0.0.0
ports:
- "8080:8080"
volumes:
- ./:/opt/eyeball
entrypoint: "npm run dev"