запрос curl на порт docker-compose зависает в travis-ci

#docker-compose #travis-ci

#docker-compose #travis-ci

Вопрос:

Наши сборки travis начали сбоить, и я не могу понять, почему. Наше приложение запускается в docker-compose, а затем мы запускаем cypress для него. Раньше это работало отлично. Теперь порт хоста для веб-сервера просто не отвечает. Я удалил cypress и просто пытаюсь запустить curl http://localhost:3001 и он просто зависает. Вот файл travis.yml. Любые предложения будут высоко оценены. Я несколько часов пытался возиться с версиями docker, дистрибутивами, localhost vs 127.0.0.1 и т. Д. безрезультатно. Все это отлично работает локально на моей рабочей станции.

 language: node_js
node_js:
  - "12.19.0"

env:
  - DOCKER_COMPOSE_VERSION=1.25.4

services:
  - docker

sudo: required

# Supposedly this is needed for Cypress to work in Ubuntu 16
# https://github.com/cypress-io/cypress-example-kitchensink/blob/master/basic/.travis.yml
addons:
  apt:
    packages:
      - libgconf-2-4

before_install:
  # upgrade docker compose https://docs.travis-ci.com/user/docker/#using-docker-compose
  - sudo rm /usr/local/bin/docker-compose
  - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
  - chmod  x docker-compose
  - sudo mv docker-compose /usr/local/bin
  # upgrade docker itself https://docs.travis-ci.com/user/docker/#installing-a-newer-docker-version
  - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  - sudo apt-get update
  - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
  # Put the .env file in place
  - cp .env.template .env

install:
  # Install node modules (for jest and wait-on) and start up the docker containers
  - cd next
  - npm ci
  - cd ..
  - cd e2e
  - npm ci
  - cd ..

script:
  - docker --version
  - docker-compose --version
  - docker-compose up --build -d
  # Run unit tests
  # - cd next
  # - npm run test
  # Run e2e tests
  # - cd ../e2e
  # - npx cypress verify
  # - CYPRESS_FAIL_FAST=true npx wait-on http://localhost:3001 --timeout 100000 amp;amp; npx cypress run --config video=false,pageLoadTimeout=100000,screenshotOnRunFailure=false
  - sleep 30
  - curl http://127.0.0.1:3001 --max-time 30
  - docker-compose logs db
  - docker-compose logs express
  - docker-compose logs next

post_script:
 - docker-compose down

 

Журналы выглядят так:

 The command "docker-compose up --build -d" exited with 0.
30.01s$ sleep 30
The command "sleep 30" exited with 0.
93.02s$ curl http://127.0.0.1:3001 --max-time 30
curl: (28) Operation timed out after 30001 milliseconds with 0 bytes received
The command "curl http://127.0.0.1:3001 --max-time 30" exited with 28.
 

Журналы docker compose не показывают ничего подозрительного. Это как если бы сеть была настроена неправильно, и docker не знает ни о каких запросах.

Вот docker-compose.yml на случай, если он полезен:

 version: '3.7'

services:
  db:
    image: mg-postgres
    build: ./postgres
    ports:
      - '5433:5432'
    environment:
      POSTGRES_HOST_AUTH_METHOD: 'trust'
  adminer:
    image: adminer
    depends_on:
      - db
    ports:
      - '8080:8080'
  express:
    image: mg-server
    build: ./express
    restart: always
    depends_on:
      - db
    env_file:
      - .env
    environment:
      DEBUG: express:*
    volumes:
      - type: bind
        source: ./express
        target: /app
      - /app/node_modules
    ports:
      - '3000:3000'
  next:
    image: mg-next
    build: ./next
    depends_on:
      - db
      - express
    env_file:
      - .env
    volumes:
      - type: bind
        source: ./next
        target: /app
      - /app/node_modules
    ports:
      - '3001:3001'
    command: ['npm', 'run', 'dev']