【发布时间】:2017-09-23 01:21:30
【问题描述】:
如何使用 docker-machine 部署带有简单 Rails 应用程序的 docker-compose 应用程序?这有意义吗?
我已经阅读了有关该主题的多篇文章,包括 official Docker docs on using Compose in production 和 Remote Deployment Guide by Rackspace,但没有一篇真正适合我。
我有一个非常简单的 Rails 应用程序,由以下 docker-compose 文件描述:
version: '3'
services:
app:
build:
context: .
dockerfile: containers/production/Dockerfile
image: projectname:app
command: containers/production/bootstrap.sh
ports:
- 3000:3000
volumes:
- .:/app
- gems:/gems
depends_on:
- db
environment:
- DOCKERIZED=1
db:
image: postgres:9.6
ports:
- '5432:5432'
volumes:
- data:/var/lib/postgresql/data
volumes:
data:
gems:
接下来我尝试使用docker-machine 将其部署到远程主机:
eval "$(docker-machine env production)"
docker-compose build
docker-compose up -d
前两个步骤效果很好。连接到本地 Compose 的 Docker 主机,app 映像已构建,db 容器开始生产。但启动 app 失败:
Creating projectname_app_1 ...
Creating projectname_app_1 ... error
ERROR: for projectname_app_1 Cannot start service app: oci runtime error: container_linux.go:262: starting container process caused "exec: \"containers/production/bootstrap.sh\": stat containers/production/bootstrap.sh: no such file or directory"
看起来我错过了一些关于机器的重要概念。我应该如何编写生产 Compose 文件以使其在远程容器主机上工作?
【问题讨论】:
标签: docker docker-compose docker-machine