【问题标题】:running docker-compose on a docker-machine在 docker-machine 上运行 docker-compose
【发布时间】:2017-12-18 20:01:54
【问题描述】:

我正在尝试使用 docker-machine 和 docker-compose 在单个 ec2 实例上部署两个服务。

这就是我正在做的事情:

docker-machine create --driver amazonec2 --engine-install-url=https://web.archive.org/web/20170623081500/https://get.docker.com mymachine

docker-machine ssh mymachine -- mkdir -p /home/ubuntu/myapp

git clone https://github.com/myapp/service1.git
docker-machine scp -r ./service1 mymachine:/home/ubuntu/myapp/
rm -rf ./service1

git clone https://github.com/myapp/service2.git
docker-machine scp -r ./service2 mymachine:/home/ubuntu/myapp/
rm -rf ./service2

docker-machine env mymachine
//export DOCKER_TLS_VERIFY="1"
//export DOCKER_HOST="something"
//export DOCKER_CERT_PATH="something"
//export DOCKER_MACHINE_NAME="mymachine"

eval $(docker-machine env mymachine)

docker-machine active
//mymachine

docker-compose -f ./docker-compose-prod.yml up -d

我收到此错误:build path /home/ubuntu/myapp/service1 either does not exist, is not accessible, or is not a valid URL.

docker-compose-prod.yml 的相关部分:

version: '3'

services:
  service1:
    build:  /home/ubuntu/myapp/service1

  service2:
    build:  /home/ubuntu/myapp/service2

通过 ssh 检查时路径很好,似乎 docker-compose 仍在尝试在我的本地机器上工作,当我为它提供本地存在的构建路径时很高兴。 Docker 本身在远程机器上执行命令。

如何让 docker-compose 在远程 docker-machine 上运行?

我是新手,所以希望我遗漏了一些微不足道的东西。 感谢您的帮助!

【问题讨论】:

    标签: docker amazon-ec2 docker-compose docker-machine


    【解决方案1】:

    docker build(包括docker-compose build)涉及“构建上下文”。此上下文是您选择从客户端发送到 docker 引擎的所有文件,包括 Dockerfile,以执行构建。您可以使用 .dockerignore 文件从此上下文中删除文件。

    当您运行 docker build /home/ubuntu/myapp/service1 或在您的情况下将该目录包含在 compose.yml 文件中时,您将 /home/ubuntu/myapp/service1 定义为您从客户端发送到 docker 引擎的构建上下文。该引擎可能是本地节点或远程节点,在您的情况下是 ec2 实例。从那里,一切都远程运行,包括 Dockerfile 中引用此上下文的任何 COPYADD 命令。

    要远程运行构建,您可以将上下文保留在本地计算机上,而不是运行 rm,或者您可以通过 ssh 进入 ec2 实例并在该计算机上本地运行 docker-compose 命令(您可以需要在那里安装 docker-compose,我不确定它是否包含在默认机器映像中)。我的偏好通常是前者,因为它可以更轻松地开发用于构建映像的文件,并且它允许远程 docker 机器是短暂的。

    【讨论】:

    • 谢谢,有道理。似乎我对它应该如何工作做出了错误的假设
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    相关资源
    最近更新 更多