如何使用docker compose使用postgresql数据库运行redmine

时间:2016-07-15 11:03:06

标签: docker redmine docker-compose

使用官方的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运行相同的配置。这是我使用的第一个docker-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"

使用docker compose,redmine服务器正常启动但忽略了postgres数据库容器,而是使用内部SQLite数据库。

我也尝试过在网络服务器配置中使用以下环境:

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

但没有成功。这次redmine容器根本没有启动并显示以下错误消息:

 [!] 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
 #  -------------------------------------------

1 个答案:

答案 0 :(得分:0)

来自docker-compose版本2文档:

  

与环境变量的链接:如环境中所述   变量引用,链接创建的环境变量   弃用了一段时间。在新的Docker网络系统中,他们有   被删除了。您应该直接连接到相应的   主机名或自己设置相关的环境变量,使用   链接主机名:

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

在docker-compose v.2中你应该使用网络。 docker中的所有服务默认组成一个公共网络。在您的配置中,您的网络服务器容器可以通过database主机解析数据库而无需任何链接。