我正在尝试为我的节点应用程序运行mocha单元测试。该应用程序由docker镜像构建。
Docker镜头:
FROM node:6.10.0-alpine
RUN mkdir -p /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3000
CMD ["npm", "start"]
Docker撰写:
version: "3"
services:
web: #### nodejs image
build: .
volumes:
- ./app/
ports:
- "3000:3000"
depends_on:
- db
db:
build: ##### postgres db image
context: .
dockerfile: dbDockerfile
ports:
- 5432:5432
可以按预期构建和运行设置。问题不在于我确定如何运行像mocha
这样的单元测试命令来执行测试。
我看到一个名为dockunit
的模块,但我不确定这是否是现在唯一的方法。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:6)
使用docker
(和docker-compose
),您可以在容器中运行任意命令。 Dockerfile
定义了在未指定其他命令时运行的默认命令,但这并不意味着它是唯一可以运行的命令。
在您的情况下:当没有指定其他命令时运行npm start
。当你执行docker-compose up
时会发生这种情况。
但是,您可以使用docker run
或docker-compose run
运行任何命令。对于您的测试,可能如下所示:docker-compose run web mocha
。
up
和run
略有不同,我建议您仔细阅读:Should I use docker-compose start up or run?
这有助于您入门吗?