docker - 访问在端口 8080 上运行 REST API 的 docker 容器的 Travis CI 连接错误
问题描述
我在连接到 Travis CI 作业/工作人员中的 Docker 容器时遇到问题。
我在具有公共端口 8080 的 Docker 容器中运行 REST API。我可以验证容器启动时没有故障,并且容器在 0.0.0.0:8080 处运行。
在脚本期间,我正在运行 Postman/Newman 测试,并且每当我运行测试时,我都会不断获取socket hang up
或read ECONNRESET
运行该测试。我已经在端点上尝试了 localhost、127.0.0.1、0.0.0.0 的所有组合,但都失败了。
使用 curl 时,我在尝试访问这些端点时也会遇到连接错误curl: (56) Recv failure: Connection reset by peer
。
在工作/工人中是否无法访问容器端口?
码头工人-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
.travis.yml
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
解决方案
推荐阅读
- c++ - 拖放到特定区域 | Qt
- eclipse - 我可以像 VS 一样让 eclipse 的资源管理器视图“滑动”到分支吗?
- html - LastPass 在点击返回后提示保存密码
- python-3.x - Python类替换不起作用
- java - 在 java 中读取 *.json 文件
- angular - 模拟实用功能Angular 6
- node.js - 在 REST 应用程序中处理数据库错误时,什么被视为标准?
- sql - 将“X 行”列的百分比添加到 SQL 数据透视表
- r - R将第二个数据聚合到分钟更有效
- django - 引用从 view.py 传递的模板中的实例属性 - django 2.0