У меня есть проект, который включает установку докера, над которой я пытаюсь работать. Мой Dockerfile:
FROM node:8-alpine
EXPOSE 3000
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV
RUN mkdir /app
WORKDIR /app
ADD package.json yarn.lock seed.js /app/
RUN yarn --pure-lockfile
ADD . /app
CMD ["yarn seed"]
CMD ["yarn", "docker:start"]
и мой docker-compose:
version: "2"
services:
isawyou-server:
build: .
environment:
- MONGO_URI=mongodb://mongodb:27017/isawyou
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- mongodb
mongodb:
image: mongo
ports:
- "27017:27017"
Теперь для docker-compose.test я пытаюсь настроить его в соответствии с инструкциями https://docs.docker.com/docker-cloud/builds/automated-testing/ . Я в основном хочу иметь другую базу данных для тестирования. Я пробовал разные конфигурации, но ни одна не работает. Я получаю следующую ошибку:
yarn run v1.3.2
$ docker-compose -f docker-compose.yml -f docker-compose.test.yml up --abort-on-container-exit
Starting server_mongodb_1 ...
Starting server_mongodb_1 ... done
Recreating server_sut_1 ...
Recreating server_sut_1
Starting server_isawyou-server_1 ...
Recreating server_sut_1 ... error
ERROR: for server_sut_1 Cannot start service sut: driver failed programming external connectivity on endpoint server_sut_1 (bbStarting server_isawyou-server_1 ... done
ERROR: for sut Cannot start service sut: driver failed programming external connectivity on endpoint server_sut_1 (bbfc8b734ab6d4df2f3d3060245c81e0c88e945952dfe62c74f2aae6510d2cfe): Bind for 0.0.0.0:3000 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
мой docker-compose.test в настоящее время выглядит так:
version: "2"
services:
sut:
build: .
environment:
- MONGO_URI=mongodb://mongodb:27017/isawyou
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- mongodb
command: yarn test
mongodb:
image: mongo
ports:
- "27017:27017"
Мне нужно было сослаться на мой URI mongo db с именем службы mongo. Мне помог этот ответ: https://stackoverflow.com/questions/25828021/unable-to-connect-to-mongodb-running-in-docker-container
Я считаю, что в файл docker-compose.test нужно добавить службу базы данных. Инструкции вы указали, что «Вы можете определить любое количество связанных служб в этом файле. Единственное требование - это определение sut». поэтому я думаю, что служба mongodb отсутствует, чтобы найти базу данных, необходимую для ваших тестов. Я искал образец docker-compose.test это может быть полезно для понимания того, как это должно работать.