2016-07-15 172 views
0

使用官方的redmine docker指南,可以启动连接到postgresql数据库的redmine服务器。我用下面的命令:如何使用docker组合使用postgresql数据库运行redmine组合

docker run -d --name redmine_db -p 6543:5432 -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=redmine postgres:9.5.1 

docker run -d --name redmine_web -p 3001:3000 --link redmine_db:postgres redmine:3.2.3 

但我有困难与docker compose运行相同的配置。下面是我使用的第一个码头工人,compose.yml文件:

version: '2' 
services: 
    webserver: 
    image: redmine:3.2.3 
    ports: 
     - "3001:3000" 
    links: 
     - database:postgres 

    database: 
    image: postgres:9.5.1 
    ports: 
     - "6543:5432" 
    environment: 
     - POSTGRES_PASSWORD="secret" 
     - POSTGRES_USER="redmine" 

随着码头工人组成了管理平台服务器可以正常启动,但它忽略了Postgres数据库容器和使用内部SQLite数据库来代替。

我也试着在web服务器配置以下环境:

environment: 
    - POSTGRES_PORT_5432_TCP="5432" 
    - POSTGRES_ENV_POSTGRES_USER="redmine" 
    - POSTGRES_ENV_POSTGRES_PASSWORD="secret" 

但没有成功。这一次的管理平台容器完全不启动,并显示以下错误消息:

[!] There was an error parsing `Gemfile`: (<unknown>): did not find expected key while parsing a block mapping at line 2 column 3. Bundler cannot continue. 

# from /usr/src/redmine/Gemfile:64 
# ------------------------------------------- 
# if File.exist?(database_file) 
> database_config = YAML::load(ERB.new(IO.read(database_file)).result) 
# adapters = database_config.values.map {|c| c['adapter']}.compact.uniq 
# ------------------------------------------- 
+0

“困难”?什么样的困难?你有什么错误信息? – VonC

+0

我会检查的第一件事是确保容器确实启动完毕,并且不会退出。 docker ps -a是你的容器运行吗? –

+0

对不起,我忘了指定容器正确启动,但忽略数据库contaiener。我刚刚将它添加到原始帖子。 – Sakr

回答

0

从搬运工,撰写第2个文档:与环境变量

链接:作为记录在环境 变量引用,由链接创建的环境变量已被废弃一段时间了 。在新的Docker网络系统中,他们已删除 。你应该直接连接到相应的 主机名或设置相关的环境变量自己,用 链接主机名:

web: 
    links: 
    - db 
    environment: 
    - DB_PORT=tcp://db:5432 

在泊坞窗,撰写V 2,你应该使用网络来代替。码头中的所有服务 - 默认情况下构成一个公共网络。在您的配置中,您的Web服务器容器可以通过database主机解析数据库,而无需任何链接。

+0

即使使用特定的网络并设置了所有环境变量,如“ - POSTGRES_PORT = tcp:// postgres:5432”。它无法连接到数据库。 – Sakr

+0

你是否试图从Web服务器ping你的数据库容器? – Cortwave

+0

是的,我可以用它的名字来达到它 – Sakr