【问题标题】:Push image built with docker-compose to dockerhub使用 docker-compose 将镜像构建推送到 docker hub
【发布时间】:2019-06-18 11:34:46
【问题描述】:

我有一个与 postgres 交互的 golang 脚本。在 docker-compose.yml 中为 golang 和 postgre 创建了一个服务。当我使用“docker-compose up”在本地运行它时,它可以完美运行,但是现在我想创建一个单一的图像来将它推送到我的 dockerhub,这样它就可以通过“docker run”被拉出并运行。正确的做法是什么?

由“docker-compose up --build”创建的图像启动时“docker run”没有错误,但立即停止。

docker-compose.yml:

version: '3.6' 
services: 
  go: 
    container_name: backend 
    build: ./ 
    volumes: 
      - # some paths 
    command: go run ./src/main.go
    working_dir: $GOPATH/src/workflow/project 
    environment: #some env variables 
      ports: 
      - "80:80" 
  db: 
    image: postgres 
    environment: #some env variables 
    volumes: 
      - # some paths 
    ports: 
      - "5432:5432" 

Dockerfile:

FROM golang:latest

WORKDIR $GOPATH/src/workflow/project 

CMD ["/bin/bash"]

我是 docker 的新手,所以任何关于如何以惯用方式做事的 cmets 都会受到赞赏

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    docker-compose 不会将 docker 镜像合二为一,它会根据yml 文件中定义的镜像运行(使用up)或构建然后运行(使用up --build)docker 容器。
    更多信息在official docs

    Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

    因此,在您的示例中,docker-compose 将运行两个容器:
    1 - 基于go 配置
    2 - 基于db 配置

    要查看实际运行的容器,请使用以下命令:

    docker ps -a
    

    更多信息请见docker docs

    始终建议在单独的容器上运行每个服务,但如果您坚持制作具有 golangpostrges 的映像,您可以使用 postgres 基础映像并安装 golang它,或者相反,获取基于golang的图像并在其上安装postgres

    安装步骤可以在Dockerfile里面完成,请参考:
    - postgres官方Dockerfile
    - golang官方Dockerfile

    将它们结合起来得到两者。

    编辑: (数字海洋部署)

    好吧,如果您将所有内容(docker 图像和 yml 文件)复制到您的 Droplet,它应该会启动并运行应用程序,类似于您在本地计算机上执行相同操作时发生的情况。

    可以在此处找到示例:How To Deploy a Go Web Application with Docker and Nginx on Ubuntu 18.04

    在生产中,通常用于大规模/流量应用程序,使用更高级的解决方案,例如:
    - docker swarm
    - kubernetes

    关于数字海洋上Kubernetes的更多信息,请参考official docs

    希望这可以帮助您找到自己的方式。

    【讨论】:

    • 感谢您的清晰解释。因此,如果我想将我的程序部署到数字海洋服务器上的网站并在 docker 中运行,更好的方法是单独构建我的图像并一个接一个地运行它们,或者将整个目录传输到服务器并运行“docker-组成”?实际生产中应该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2023-04-10
    相关资源
    最近更新 更多