为了确认skaffold.yaml中指定的测试是在容器中运行还是在本地运行,我打印了节点版本。
>node --version
v18.12.1
我在skaffold. yaml中运行了相同的命令。
apiVersion: skaffold/v4beta2
kind: Config
metadata:
name: microservices-quiz-app
build:
artifacts:
- image: auth-img
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: src/**/*.js
dest: .
test:
- image: auth-img
context: auth
custom:
- command: node --version
manifests:
rawYaml:
- auth/k8s/*.yml
- ingress-srv.yml
文档中的措辞表明它是在本地运行的“It will run on the local machine”。documentation
如果我在skaffold dev
之后直接连接到使用auth-img构建的容器,我会看到不同的版本。
有没有一种方法可以在一个容器中运行测试,并带有必要的依赖项(例如jest、supertest)来运行测试?
为什么斯卡福德不使用正在测试的图像;我们应该不包括开发依赖在图像?
FROM node:18-alpine
# ENV NODE_ENV=production
WORKDIR /app
COPY ["package.json", "package-lock.json*", "./"]
# RUN npm install --production
RUN npm install
COPY . .
# CMD ["npm", "start"]
CMD [ "npm", "run", "dev" ]
2条答案
按热度按时间h22fl7wq1#
就我个人而言,我建议使用多阶段构建,这样你就不会被锁定在一个特定的工具中,比如Skaffold。
ycl3bljg2#
我们可以使用docker来使用生成的镜像运行一个容器。Skaffold提供了变量
IMAGE
。