使用官方的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
# -------------------------------------------
答案 0 :(得分:0)
来自docker-compose版本2文档:
与环境变量的链接:如环境中所述 变量引用,链接创建的环境变量 弃用了一段时间。在新的Docker网络系统中,他们有 被删除了。您应该直接连接到相应的 主机名或自己设置相关的环境变量,使用 链接主机名:
web: links: - db environment: - DB_PORT=tcp://db:5432
在docker-compose v.2中你应该使用网络。 docker中的所有服务默认组成一个公共网络。在您的配置中,您的网络服务器容器可以通过database
主机解析数据库而无需任何链接。