Travis CI连接访问端口8080上运行REST API的docker容器时出错

Travis CI连接访问端口8080上运行REST API的docker容器时出错,docker,docker-compose,postman,travis-ci,newman,Docker,Docker Compose,Postman,Travis Ci,Newman,我在连接Travis CI作业/工作人员内的Docker容器时遇到问题 我正在Docker容器中运行一个RESTAPI,该容器带有一个公共端口8080。我可以验证容器是否无故障启动,以及容器是否以0.0.0.0:8080的速度运行 在脚本期间,我正在运行Postman/Newman测试,每次运行测试时,我都会遇到socket挂起或read ECONNRESET。我在端点上尝试了localhost、127.0.0.1、0.0.0.0的所有组合,但都失败了 使用curl时,我在尝试访问这些端点时也会

我在连接Travis CI作业/工作人员内的Docker容器时遇到问题

我正在Docker容器中运行一个RESTAPI,该容器带有一个公共端口8080。我可以验证容器是否无故障启动,以及容器是否以0.0.0.0:8080的速度运行

在脚本期间,我正在运行Postman/Newman测试,每次运行测试时,我都会遇到
socket挂起
read ECONNRESET
。我在端点上尝试了localhost、127.0.0.1、0.0.0.0的所有组合,但都失败了

使用curl时,我在尝试访问这些端点时也会遇到连接错误
curl:(56)Recv失败:由对等方重置连接

作业/工作人员内是否无法访问容器端口

docker compose.yml

version: "2"
services:
  db:
    container_name: api-db
    image: mysql:5.7.22
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: api_db
      MYSQL_USER: devadmin
      MYSQL_PASSWORD: password
    volumes:
     - db_data:/var/lib/mysql
    ports:
      - 3366:3306/tcp
    networks:
     - web    
  rest-api:
    container_name: rest-api
    build: .
    depends_on:
      - db
    command: "python manage.py runserver 0.0.0.0:8000"
    privileged: true
    restart: always
    ports:
      - 8080:8000/tcp
    networks:
      - web
    links:
     - db:mysql
    volumes:
      - ../../app:/app
networks:
  web:
    driver: bridge
volumes:
  db_data:
    driver: local
language: node_js
node_js:
  - "8.2.1"

services:
  - docker

before_install:
  - 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

install:
  - docker-compose -f docker/dev/docker-compose.yml up -d
  - npm install newman

before_script:
  - node --version
  - npm --version
  - node_modules/.bin/newman --version
  - docker ps

script:
  - curl localhost:8080/testendpoint/
  - node_modules/.bin/newman run tests/postman/API.postman_collection.json -e tests/postman/Testing.postman_environment.json

.travis.yml

version: "2"
services:
  db:
    container_name: api-db
    image: mysql:5.7.22
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: api_db
      MYSQL_USER: devadmin
      MYSQL_PASSWORD: password
    volumes:
     - db_data:/var/lib/mysql
    ports:
      - 3366:3306/tcp
    networks:
     - web    
  rest-api:
    container_name: rest-api
    build: .
    depends_on:
      - db
    command: "python manage.py runserver 0.0.0.0:8000"
    privileged: true
    restart: always
    ports:
      - 8080:8000/tcp
    networks:
      - web
    links:
     - db:mysql
    volumes:
      - ../../app:/app
networks:
  web:
    driver: bridge
volumes:
  db_data:
    driver: local
language: node_js
node_js:
  - "8.2.1"

services:
  - docker

before_install:
  - 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

install:
  - docker-compose -f docker/dev/docker-compose.yml up -d
  - npm install newman

before_script:
  - node --version
  - npm --version
  - node_modules/.bin/newman --version
  - docker ps

script:
  - curl localhost:8080/testendpoint/
  - node_modules/.bin/newman run tests/postman/API.postman_collection.json -e tests/postman/Testing.postman_environment.json


Shwo告诉我们你的docker compose。在Travis上可以访问映射的容器端口,就像在其他地方可以访问一样。测试命令是否在本地计算机上顺利通过?还有另一个建议-如果你已经有一个docker compose文件,让测试作为另一个容器运行-然后在Travis上运行类似于
docker compose运行测试的东西
一切都在我的本地机器上传递没有问题,这就是为什么这么令人费解的原因。容器在Travis之外也没有错误或问题。我收回这一点,MySQL有一个错误导致Django失败。在那之后一切都很好。谢谢大家的帮助!Shwo告诉我们你的docker compose。在Travis上可以访问映射的容器端口,就像在其他地方可以访问一样。测试命令是否在本地计算机上顺利通过?还有另一个建议-如果你已经有一个docker compose文件,让测试作为另一个容器运行-然后在Travis上运行类似于
docker compose运行测试的东西
一切都在我的本地机器上传递没有问题,这就是为什么这么令人费解的原因。容器在Travis之外也没有错误或问题。我收回这一点,MySQL有一个错误导致Django失败。在那之后一切都很好。谢谢大家的帮助!