【发布时间】:2021-10-13 04:50:52
【问题描述】:
我有一个包含三个容器的 docker-compose 设置 - mysql db、无服务器应用程序和测试(用 mocha 测试无服务器应用程序)。在使用 docker-compose up --build 执行时,执行顺序似乎混乱并且顺序不正确。 mysql db 和 serverless app 都需要处于工作状态才能使测试正确运行(depends_on 几乎无法正常工作)。
因此我尝试使用 dockerize 模块设置超时并在启动测试容器之前监听 3306 和 4200 上的 tcp 端口。但我收到一条错误消息,提示 Cannot find module '/dockerize'。
我的 docker-compose.yml 和 Dockerfile 的设置方式有什么问题吗?我对 docker 很陌生,所以欢迎任何帮助。
Dockerfile.yml
FROM node:12
# Create app directory
RUN mkdir -p /app
WORKDIR /app
# Dockerize is needed to sync containers startup
ENV DOCKERIZE_VERSION v0.6.0
RUN wget --no-check-certificate https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# Install app dependencies
COPY package.json /app/
COPY package-lock.json /app/
RUN npm install -g serverless@2.41.2
RUN npm install
# Bundle app source
COPY . /app
docker-compose.yml
version: '3'
services:
mysql-coredb:
image: mysql:5.6
container_name: mysql-coredb
expose:
- "3306"
ports:
- "3306:3306"
serverless-app:
build: .
image: serverless-app
container_name: serverless-app
depends_on:
- mysql-coredb
command: sls offline --stage local --host 0.0.0.0
expose:
- "4200"
ports:
- "4200:4200"
links:
- mysql-coredb
volumes:
- /app/node_modules
- .:/app
test:
image: node:12
working_dir: /app
container_name: test
volumes:
- /app/node_modules
- .:/app
command: dockerize
-wait tcp://serverless-app:4200 -wait tcp://mysql-coredb:3306 -timeout 15s
bash -c "npm test"
depends_on:
- mysql-coredb
- serverless-app
links:
- serverless-app
【问题讨论】:
标签: node.js docker docker-compose