Назад | Перейти на главную страницу

Настройка docker.compose.test: 3000 портов уже выделены

У меня есть проект, который включает установку докера, над которой я пытаюсь работать. Мой 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 это может быть полезно для понимания того, как это должно работать.