【发布时间】:2018-06-30 21:17:17
【问题描述】:
我正在尝试通过 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"
【问题讨论】:
-
如果删除
docker-compose.yml中的volumes:块会怎样?这基本上会用您的主机系统上的内容覆盖Dockerfile中安装的所有内容,我猜您的 Kubernetes 部署不会这样做。我也会删除自定义的entrypoint:行,除非你知道部署规范有类似的东西。 -
成功了,非常感谢。您对
entrypoint的看法也是正确的;它需要更改为command。如果您想将此作为答案发布,我会将其标记为已接受。
标签: docker npm kubernetes google-kubernetes-engine