我正在尝试使用Google Cloud Platform了解Kubernetes的方法。我有一个基于Vue的小型应用程序,在本地与以下Dockerfile
和docker-compose.yml
一起工作。
在本地构建和启动该项目非常有用。但是,在使用kompose up
创建Deployment / svc / etc时。为此,容器无法正确构建。最终,它以崩溃循环结束。
检查日志表明,问题在于npm
找不到/opt/eyeball/package.json
或/opt/eyeball/package-lock.json
。我很困惑,因为当我构建并推送群集最终崩溃的映像时,这不是问题-这些文件就在您期望它们基于我的Dockerfile
的位置。知道为什么会这样吗?
Dockerfile
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
docker-compose.yml
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"
答案 0 :(得分:3)
您需要删除volumes:
文件中的docker-compose.yml
块。
volumes:
中的docker-compose.yml
块指示Docker获取本地目录中的内容并将其装入到容器中,该容器将隐藏您在Dockerfile
中添加的所有内容。当您使用Kompose进行部署时,它会转换为Kubernetes指令,但是由于Kubernetes环境没有本地开发环境,因此会导致部署的容器失败。