首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在travis上启动docker postgres时出错-

在travis上启动docker postgres时出错-
EN

Stack Overflow用户
提问于 2016-07-15 22:05:04
回答 2查看 2.1K关注 0票数 6

在尝试连接到docker postgres容器时,我的travis-ci before_script出现了问题:Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use

我已经看到这个问题被提出,但从来没有完全解决围绕SO和github的问题,我也不清楚它是特定于docker还是travis。一个相关的问题(如下)通过使用5433作为主机postgres地址来解决,但我想在开始之前确切地知道发生了什么。

我的travis.yml: sudo:需要的服务:- docker env: DOCKER_COMPOSE_VERSION: 1.7.1 DOCKER_VERSION: 1.11.1-0~trusty

代码语言:javascript
复制
before_install:
  # list docker-engine versions
  - apt-cache madison docker-engine
  # upgrade docker-engine to specific version
  - sudo apt-get -o Dpkg::Options::="--force-confnew" install -y docker-engine=${DOCKER_VERSION}
  # upgrade 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
before_script:
  - echo "Before Script:"
  - docker-compose -f docker-compose.ci.yml build
  - docker-compose -f docker-compose.ci.yml run app rake db:setup
  - docker-compose -f docker-compose.ci.yml run app /bin/sh

script:
  - echo "Running Specs:"
  - rake spec

我的ci的docker-compose.yml:

代码语言:javascript
复制
postgres:
  image: postgres:9.4.5
  environment:
    POSTGRES_USER: web
    POSTGRES_PASSWORD: yourpassword
  expose:
    - '5432' # added this as an attempt to open the port
  ports:
    - '5432:5432'
  volumes:
    - web-postgres:/var/lib/postgresql/data

redis:
  image: redis:3.0.5
  ports:
    - '6379:6379'
  volumes:
    - web-redis:/var/lib/redis/data

web:
  build: .
  links:
    - postgres
    - redis
  volumes:
    - ./code:/app
  ports:
    - '8000:8000'
  # env_file: # setting these directly in the environment 
  #   - .docker.env # (they work fine locally)

sidekiq:
  build: .
  command: bundle exec sidekiq -C code/config/sidekiq.yml
  links:
    - postgres
    - redis
  volumes:
    - ./code:/app

Docker & Postgres: Failed to bind tcp 0.0.0.0:5432 address already in use

How to get Docker host IP on Travis CI?

EN

回答 2

Stack Overflow用户

发布于 2018-04-05 16:37:29

在Travis CI中,Postgres服务似乎是默认启用的。

因此,您可以:

  1. 尝试在您的Travis配置中禁用Postgres服务。参见How to stop services on Travis CI running by default?。另请参阅https://docs.travis-ci.com/user/database-setup/#PostgreSQL

  1. 将postgres容器映射到另一个主机端口(!= 5432)。像-p 5455:5432.

一样

检查服务是否已经在运行也很有用:Check If a Particular Service Is Running on Ubuntu

票数 1
EN

Stack Overflow用户

发布于 2016-07-15 22:15:19

你用Travis的Postgres吗?

services: - postgresql

如果你提供travis.yml会更容易些

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38398135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档