当前位置: 首页 > 知识库问答 >
问题:

Docker无法与Travis配置项中的postgresql建立连接

暴德运
2023-03-14

我正在尝试将Travis CI集成到我的rails应用程序中。在我的本地机器(ubuntu,windows)上一切工作都很好,但是在travis主机上有一个连接错误。下面是我的配置

sudo: required

language: ruby

services:
  - docker

env:
  DOCKER_COMPOSE_VERSION: 1.13.0

before_install:
  - 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
  - sudo apt-get update
  - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-engine
  - docker-compose build
  - docker-compose -f docker-compose.commands.yml run --rm website rails db:create db:migrate db:test:prepare

script:
 - docker-compose -f docker-compose.commands.yml run --rm -e RAILS_ENV=test website rspec
development: &default
adapter: postgresql
database: my_app_development
username: postgres
host: postgres
port: 5432
version: '3'

services:
  postgres:
    image: 'postgres:9.6.2'
    ports:
      - "5432"

  website:
    depends_on:
      - 'postgres'
    build: .
    ports:
      - '3000'
  volumes:
    - '.:/my_app'
    - 'bundle_data:/bundle'

 volumes:
  bundle_data:

正在创建myapp_postgres_1

无法连接到服务器:连接被拒绝服务器是否在主机“Postgres”(172.18.0.2)上运行并接受端口5432上的TCP/IP连接?无法为{“adapter”=>“postgreSQL”、“encode”=>“unicode”、“database”=>“my_app_development”、“pool”=>5、“username”=>“postgres”、“host”=>“postgres”、“port”=>5432}rails创建数据库已中止!PG::ConnectionBad:无法连接到服务器:连接被拒绝服务器是否在主机“Postgres”(172.18.0.2)上运行并接受端口5432上的TCP/IP连接?

共有1个答案

祖利
2023-03-14

感谢@johnharris85和@jbielick我找到了这个解决方案

website:
    depends_on:
      - 'postgres'
    build: .
    ports:
      - '3000'
    volumes:
      - '.:/my_app'
      - 'bundle_data:/bundle'
    entrypoint: ./wait-for-postgres.sh postgres 5432

  postgres:
    image: 'postgres:9.6.2'
    ports:
      - '5432'

wait-for-postgres.sh:

#!/bin/sh

postgres_host=$1
postgres_port=$2
shift 2
cmd="$@"

# wait for the postgres docker to be running
while ! pg_isready -h $postgres_host -p $postgres_port -q -U postgres; do
  >&2 echo "Postgres is unavailable - sleeping"
  sleep 1
done

>&2 echo "Postgres is up - executing command"

# run the command
exec $cmd
 类似资料:
  • 问题内容: 我正在尝试从MS AD中检索一些信息:特定分支机构的成员,部门名称,职位等。 我使用了很多示例,包括Apache Directory LDAP API 和UnboundID,但是我无法与AD建立连接。 RDN: 为了进行搜索,我使用以下过滤器: 当我使用中的数据创建目录上下文时,出现异常: 如果未指定密码,则会出现以下异常: 我已验证我的帐户未锁定。 根据常见的活动目录LDAP绑定错误

  • 我在docker中运行了elasticsearch 8.1,其中包含以下docker compose文件: 我正在尝试使用org.elasticsearch.client.RestClient向es集群发出一个简单的GET请求。 请求: Rest客户端初始化: 主要方法: buildClusterHosts()方法正确地构建了一个HttpHost数组(在本例中只有一个),并将其提供给rest客户端

  • 我发现自己在一个工作,我必须与Windows服务器(2012)-我从来没有问题与建立DB连接,但现在我似乎没有找到任何正确的解决方案。 我将向您展示我的连接php代码: 这是我在浏览器中得到的结果: SQLSTATE[HY000][2002]是一家大型计算机公司。 翻译成英文: 无法建立连接,因为目标机器主动拒绝它。 注意:我下载了mssql驱动程序和sqlsrv驱动程序,并将它们解压缩到/ext

  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt

  • 本文向大家介绍docker配置独立桥接IP的方法,包括了docker配置独立桥接IP的方法的使用技巧和注意事项,需要的朋友参考一下 使用端口映射(NAT)的方式存在一个弊端,当多个容器都需要使用某个端口时或者host主机端口与容器端口冲突时(例如,host主机搭建了80的服务,两个容器也都搭建了80的服务,那个只有1个服务可以使用本机的80端口,其他服务都要映射为其他端口) 为容器配置独立的桥接I

  • 在使用PHP 5.6.3在Ubuntu 14.04上克隆存储库后,我无法运行PHP composer。phar selfupdate都不是php composer。phar更新。我收到以下消息: 我认为问题应该出在我本地拥有的证书上,但我无法想象如何解决它。 这是作曲家。json: