You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Hub拉取完整Docker Compose多服务配置并运行?

问题描述

我的docker-compose.yml配置如下:

version: "3.8"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: darajava/audio-diary
    ports:
      - 80:3001
    volumes:
      - .:/app
      - "/app/node_modules"
    depends_on:
      - db
    container_name: "soliloquy_express"

  db:
    image: mariadb:latest
    restart: always
    environment:
      - MYSQL_DATABASE=soliloquy
      - MYSQL_USER=soliloquy
      - MYSQL_PASSWORD=password
      - MYSQL_ROOT_PASSWORD=password
    volumes:
      - ../db_data:/var/lib/mysql
    container_name: "soliloquy_db"

我还计划在此基础上添加Nginx服务。

我用以下命令将镜像推送到Docker Hub:

docker-compose build
docker-compose push

之后在EC2实例上执行docker pull darajava/audio-diary:latest可以拉取镜像,但运行该镜像时只会启动app服务。

而执行docker-compose pull darajava/audio-diary:latest会报错,提示缺少docker-compose.yml文件。

我有两个问题:

  1. 能否仅通过Docker Hub拉取包含app、db及其他服务的完整Docker Compose配置,并在EC2实例上拉取运行?
  2. 我是不是误用了Docker Compose的使用场景?
解答

第一个问题:无法仅通过Docker Hub拉取完整Compose配置

Docker Hub就是个镜像仓库,只能存储Docker镜像,根本没法保存docker-compose.yml这类配置文件。你之前推送到Hub的只有darajava/audio-diary这一个镜像(也就是app服务的镜像),db服务用的是官方的mariadb:latest,本来就不需要你推送,官方已经把它放在Hub上了。

要在EC2上运行整套服务,必须把docker-compose.yml文件传到EC2实例里,然后在文件所在目录执行:

docker-compose up -d

这个命令会自动拉取所有需要的镜像(你的app镜像和官方mariadb镜像),然后启动所有服务。

第二个问题:你确实误解了Docker Compose的部分用法

  • docker-compose push只会推送Compose配置里设置了自定义镜像名称的服务镜像(也就是你的app服务),像db这种用公共镜像的服务,不会推送,因为这些镜像本身就在Docker Hub上。
  • docker-compose pull必须在有docker-compose.yml的目录下执行,它的作用是拉取配置里所有服务对应的镜像,不是单独拉某个镜像。单独拉镜像用docker pull就行,但这样只能启动单个容器,没法启动整套服务。

推荐部署流程

  • 把docker-compose.yml传到EC2实例(用scp、Git或者其他你顺手的文件同步方式都可以)
  • 在EC2上进入该文件所在目录,执行docker-compose up -d,Compose会自动搞定所有镜像拉取和服务启动
  • 如果后续更新了app镜像,在EC2上执行docker-compose pull app && docker-compose up -d app就能更新重启app服务

内容的提问来源于stack exchange,提问作者DaraJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:20:27