gpt4 book ai didi

ruby-on-rails - 如何在 Travis CI 上获取 Docker 主机 IP?

转载 作者:行者123 更新时间:2023-12-04 07:39:32 25 4
gpt4 key购买 nike

我有一个关于 Travis 的 Rails 存储库。它有一个 docker-compose.yml 文件:

postgres:
image: postgres
ports:
- "5433:5432"
environment:
- POSTGRES_USER=calories
- POSTGRES_PASSWORD=secretpassword

(我不得不使用 5433 作为主机端口,因为 5432 给了我一个错误: Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use)

还有一个 travis.yml:
sudo: required

services:
- docker
language: ruby
cache: bundler
before_install:
# Install docker-compose
- curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
# TODO: Remove this temporary fix when it's safe to:
# https://github.com/travis-ci/travis-ci/issues/4778
- sudo iptables -N DOCKER || true
- sleep 10
- docker-compose up -d
before_script:
- bundle exec rake db:setup
script:
- bundle exec rspec spec
after_script:
- docker-compose stop
- docker-compose rm -f

我试图弄清楚在我的 database.yml 中放入什么,以便我的测试可以在 Travis CI 上运行。在我的其他环境中,我可以这样做:
adapter: postgresql
encoding: unicode
host: <%= `docker-machine ip default` %>
port: 5433
username: calories
password: secretpassword
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5

但不幸的是,这对 Travis 不起作用,因为没有 docker-machine在特拉维斯。我收到一个错误: docker-machine: command not found
如何在 Travis 上获取 Docker 主机的 IP?

最佳答案

我认为您想要的实际上是容器 IP,而不是 docker 引擎 IP。在您的桌面上,您必须查询 docker-machine对于 IP,因为创建的 VM docker-machine 没有转发端口。

由于您要公开主机端口,因此您实际上可以使用 localhost对于host值(value)。

还有其他两个选项:

  • 在容器中运行测试并链接到数据库容器,因此您可以使用 postgres作为 host值(value)。
  • 如果不想使用主机端口,可以使用 https://github.com/swipely/docker-api (或其他一些 ruby​​ 客户端)查询容器 IP 的 docker API,并将其用于 host值(value)。查找检查或检查容器 API 调用。
  • 关于ruby-on-rails - 如何在 Travis CI 上获取 Docker 主机 IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068097/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com