【问题标题】:How to run a Docker Compose image pulled from GitHub Packages如何运行从 GitHub 包中提取的 Docker Compose 映像
【发布时间】:2021-07-13 17:35:23
【问题描述】:

我已经在 GitHub Packages 上推送了一个 Docker 镜像,现在我想拉取它并使用它。 为了在本地运行映像,我曾经转到相关文件夹并使用命令docker-compose up 运行它。 但是现在,通过从 GitHub Packages 中提取,我只是得到了没有任何文件夹的 Docker 映像,我不知道如何运行它。

通过检查图像,它包含与原始文件夹相关的所有文件,但是,当我尝试运行 docker-compose up ghcr.io/giuliomat/bdt-project 命令时,我收到一条错误消息,指出目录中没有 docker-compose.yml。如果我只使用命令docker run ghcr.io/giuliomat/bdt-project,它将运行 docker-compose.yml 文件中指定的两个服务之一。如何正确运行 Docker Compose 映像?提前致谢!

更新:我试图更好地解释自己。在图像中有一个 Dockerfile(现在我已在问题中上传),用于构建 Web 服务。我在本地开发了图像,使用docker-compose up 运行它没有问题,但现在我想看看当用户从我的 GitHub 包中拉取它时必须做什么才能运行它,这是我的问题。拉取的图像应该包含运行所需的所有元素,但我不知道使用什么命令来告诉 Docker 运行 docker-compose.yml 文件中指定的两个服务,因为当用户从 GitHub Packages 拉取时,它只获取图像并且没有运行docker-compose up的文件夹。

Dockerfile:

docker-compose.yml:

拉取的docker镜像内容:

【问题讨论】:

    标签: docker docker-compose github-package-registry


    【解决方案1】:

    更新:

    Docker 映像存储库 存储 yml 文件,因此您可以在映像注册表中为用户提供 README.md(在此处详细复制粘贴 yml)和/或您还提供链接到其余文件所在的版本控制存储库,因此用户可以克隆和使用docker-compose up


    docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...] 表示“在当前工作目录中找到 [service...](if specified, otherwise run all) indocker-compose.yml` 并运行它。

    因此,如果您移出带有docker-compose.yml 的文件夹,它将不会选择撰写文件,因此将无法工作。

    对于使用图像的图像,您需要指定服务的image 属性而不是build,因为build 在本地与Dockerfile 一起使用并尝试构建图像而不是 来自 GitHub Docker 镜像注册表:

    web:
      image: "ghcr.io/giuliomat/bdt-project:latest"
    

    这与 redis 服务的方式相同。

    还要确保您可以先在本地拉取图像(否则在撰写命令之前需要docker login):

    docker pull ghcr.io/giuliomat/bdt-project
    

    【讨论】:

    • 感谢您的回答。但是,也许是因为我没有很好地解释自己,它并没有解决我的问题。我已经更新了这个问题,所以我认为现在更清楚了,我的问题不在于拉取过程,而在于运行映像,告诉 Docker 运行映像中包含的 docker-compose.yml 文件中指定的两个服务。跨度>
    • 这很不幸。我会按照你的建议做,只在 GitHub 上推送 Web 服务,并在存储库中添加 docker-compose.yml 以及说明。非常感谢您的时间和帮助。我很感激
    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 2020-06-08
    • 1970-01-01
    • 2020-06-10
    • 2021-03-26
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多