【发布时间】:2018-04-29 18:40:12
【问题描述】:
我尝试按照此处的指南进行操作:https://docs.docker.com/compose/rails/
docker-compose.yml
version: '3'
services:
pg: ######### LOOK HERE!
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bundle exec rails server -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- pg
links:
- pg ######### LOOK HERE!
cms:
image: joomla
restart: always
links:
- mysql:joomladb
ports:
- 8080:80
environment:
JOOMLA_DB_HOST: mysql
JOOMLA_DB_PASSWORD: example
mysql:
image: mysql:5.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
config/database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
host: pg ######### LOOK HERE!
username: postgres
password:
development:
<<: *default
database: project
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: project_test
production:
<<: *default
database: project
控制台
C:\Users\Chloe\workspace\project\src>docker-compose run web rake db:create
Starting src_pg_1 ... done
could not translate host name "pg" to address: No address associated with hostname
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "timeout"=>5000, "host"=>"pg", "username"=>"postgres", "password"=>nil, "database"=>"project"}
rake aborted!
PG::ConnectionBad: could not translate host name "pg" to address: No address associated with hostname
docker-compose 版本 1.20.1,构建 5d8c71b2,Docker 版本 18.03.0-ce,构建 0520e24302
【问题讨论】:
-
你解决了吗?
-
@wilgosz.pl 不!我很高兴我不是唯一一个遇到问题并意识到 Docker 是一坨屎的人。它有很大的潜力,但如果它不能解析主机名,那就没有用了,
-
克洛伊,请检查我的回答。当我尝试运行:
docker-compose up web时,pg问题就在那里,但是当我在没有web的情况下运行它时,它会尝试运行所有服务,然后depend_on赶上。所以要么: 1. 在一个终端会话中运行它:docker-compose up2. 然后运行:docker-compose run web rake db:create它会有帮助吗?
标签: ruby-on-rails docker docker-compose