【问题标题】:Can I create a container image with docker-compose build?我可以使用 docker-compose build 创建容器映像吗?
【发布时间】:2016-04-28 23:06:41
【问题描述】:

我有一个当前有多个容器的应用程序 - 我想构建一个隔离的 Web 容器,以发送到 AWS ECS。 docker-compose.yml 当前包含 web 的端口、命令、环境等信息,而我的 web 容器的实际 dockerfile 只有 python 版本。

如果我使用 app/web 目录中的docker build .,我认为 docker-compose 文件中的端口设置不会通过。是否可以使用 docker-compose build web?或者我需要在我的 web 目录中填写 dockerfile 吗?我只想将我的 Web 容器映像推送到 ECS

至于我为什么要这样做,我想我会在本地使用redis、nginx和postgres进行开发——但是ECS有自己的选择,所以我不需要使用这些容器。

这里是否有一些重大的误解需要有人来澄清?

【问题讨论】:

  • docker-compose build web 应该用词。你试过了吗?

标签: amazon-web-services docker docker-compose dockerfile


【解决方案1】:

您可以使用ecs-cli 将 docker-compose 文件推送到 ecs。工作流程是这样的:

1) 运行ecs-cli configure 并告诉它使用哪个集群

2) 构建 docker 镜像

3) 使用基于 git commit 或 date 或两者的版本标记它

4) 将 docker 镜像推送到 ecs 仓库

5) 运行ecs-cli compose service up

这是我正在使用的脚本

rm ~/.ecs/config
ecs-cli configure --region eu-central-1 --access-key AYAYAYAYAYAY1212121 --secret-key secretfaskdjfalsdfkja;sdjfalsdf --cluster "<clustername>"  


VERSION="$(git log --pretty=format:'%h' -n 1)-$(date +%Y-%m-%d-%H-%M-%S)"
docker tag image_name:latest "123123123123.abc.def.eu-central-1.amazonaws.com/image_name:$VERSION"  
docker push "123123123123.abc.def.eu-central-1.amazonaws.com/image_name:$VERSION" 

VERSION="$VERSION" ecs-cli compose --file <path/to/docker-compose.yml> -p <service-name> service up

docker-compose.ymp 示例:

version: '2'
services:
  stage-backend:
    image: 123123123123.abc.def.eu-central-1.amazonaws.com/image_name:${VERSION}
    cpu_shares: 750
    mem_limit: 1000000000
    ports:
      - "0:8080"
    environment:
      FOO: "bar"

这会创建一个新的任务实例,然后配置您的服务以运行该任务。

【讨论】:

    【解决方案2】:

    将端口设置存储在 Docker 映像中的唯一方法是在 Dockerfile 中使用 EXPOSE 命令。这告诉 docker 这些端口将在运行时监听它们。如果您向docker run 提供-P 选项,Docker 会使用此信息,此时它将把映像中EXPOSEd 的所有端口绑定到主机上的随机高编号端口。它还使用此信息使这些端口可用于任何链接的容器,即使它们未发布到主机。

    简而言之,在不使用 Dockerfile 中的EXPOSE(因为您已经在 docker-compose.yml 中映射端口)但如果您与其他人共享生成的图像时,一切都可以 100% 正常创建和推送图像那么在 Dockerfile 中 EXPOSE 您的应用侦听的所有端口将是一个好习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 2021-06-09
      相关资源
      最近更新 更多