我正在尝试使用postgres将我的rails应用程序停靠。我跟踪了几个在线的tutoarials,但我遇到了很多麻烦。
我也支持不提供帮助的公司代理
我可以使用docker dock -build_args并传入http代理。
我没有尝试运行docker-compose构建,我收到以下错误:
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version ("2.0", "2.1", "3.0", "3.1", "3.2") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
这是我的docker-compose.yml:
version: ‘2’
services:
web:
build: .
context: .
args:
- http_proxy
- https_proxy
- no_proxy
command: bundle exec rails s -b 0.0.0.0
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
environment:
- POSTGRESQL_PASSWORD=abcd12345
db:
image: postgres:9.6.2-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_DB: myappnameapp_development
我尝试将版本更改为3并完全删除它,但它总是出错。
我的第二个问题 - 在尝试运行docker-compose以通过代理时,是否必须传入任何args?
有什么想法吗?
答案 0 :(得分:2)
您的问题是版本值中的智能引号。使用普通双引号或单引号
version: '2'
或
version: "2"
而非’
或‘
。它们与'
和"
修改-1 强>
你的作品很少有其他问题,args应该是构建的一部分。 args也应该有一个值。它们应该用作对象而不是数组。所以你更正如下
version: "3"
services:
web:
build:
context: .
args:
http_proxy: "192.168.0.11"
https_proxy: ${HTTPS_PROXY_FROM_ENV}
no_proxy: ${HTTPS_PROXY_FROM_ENV:-192.168.2.2}
command: bundle exec rails s -b 0.0.0.0
volumes:
- .:/app
ports:
- "3000:3000"
depends_on:
- db
environment:
- POSTGRESQL_PASSWORD=abcd12345
db:
image: postgres:9.6.2-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_DB: myappnameapp_development
因此compose具有如何使用环境变量传递值的示例。另外,如果环境变量不可用,如何使用默认值${HTTPS_PROXY_FROM_ENV:-192.168.2.2}
您还可以使用下面的
构建特定服务并传递其构建参数docker-compose build --build-arg "http_proxy=192.168.2.2" web