Kubernetes Pod无法部署;码头工人镜像丢失/文件丢失?

时间:2018-06-30 21:17:17

标签: docker npm kubernetes google-kubernetes-engine

我正在尝试使用Google Cloud Platform了解Kubernetes的方法。我有一个基于Vue的小型应用程序,在本地与以下Dockerfiledocker-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"

1 个答案:

答案 0 :(得分:3)

您需要删除volumes:文件中的docker-compose.yml块。

volumes:中的docker-compose.yml块指示Docker获取本地目录中的内容并将其装入到容器中,该容器将隐藏您在Dockerfile中添加的所有内容。当您使用Kompose进行部署时,它会转换为Kubernetes指令,但是由于Kubernetes环境没有本地开发环境,因此会导致部署的容器失败。