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

如何通过Docker Compose将多镜像及网站运行环境推送至Docker Hub?

把PHP+Apache+MySQL+PhpMyAdmin环境推送到Docker Hub的完整步骤

我来一步步帮你搞定把这个网站运行环境推送到Docker Hub的事儿~

1. 先做好Docker Hub的准备工作

  • 首先得有个Docker Hub账号,没的话先去注册一个(直接搜Docker Hub官网就能完成注册)
  • 打开本地终端,执行登录命令:docker login,然后输入你的Docker Hub用户名和密码完成登录

2. 给你的自定义PHP-Apache镜像打标签

你的环境里只有php服务是基于本地Dockerfile构建的自定义镜像,MySQL和PhpMyAdmin用的是官方现成镜像,不需要你推送。我们需要给这个自定义镜像打上符合Docker Hub要求的标签,格式是{你的Docker Hub用户名}/{镜像名称}:{版本标签},比如你的用户名是sonumittal,可以把镜像命名为php-apache-mysqli,标签用latest或者7.4都可以。

有两种方式来打标签:

方法一:修改docker-compose.yml自动打标签

直接在你的docker-compose.yml里的php服务下添加image字段,这样构建时会自动给镜像打上正确的标签:

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    image: sonumittal/php-apache-mysqli:latest  # 替换成你自己的Docker Hub用户名和镜像名
    ports:
      - 80:80
    volumes:
      - ./src:/var/www/html/
  # 其他服务(db、phpmyadmin)保持不变

然后执行构建命令:docker-compose build php

方法二:手动构建并打标签

先单独构建镜像:

docker build -t php-apache-mysqli .

然后给镜像打上Docker Hub格式的标签:

docker tag php-apache-mysqli sonumittal/php-apache-mysqli:latest

3. 推送自定义镜像到Docker Hub

标签打好之后,执行推送命令就可以把镜像传到Docker Hub上了:

docker push sonumittal/php-apache-mysqli:latest

(记得把命令里的标签换成你自己的)

4. 分享完整的运行环境

因为MySQL和PhpMyAdmin用的是官方公开镜像,其他人可以直接拉取,不需要你推送。要让别人能复现你的整个环境,你需要:

  • 把修改后的docker-compose.yml、Dockerfile一起分享(比如上传到代码仓库或者直接发给对方)
  • 注意:目前你的网站代码是通过volume挂载的,不会包含在Docker镜像里。如果想把代码打包到镜像里一起推送,需要修改你的Dockerfile,加上这一行:
    COPY ./src /var/www/html/
    
    这样重新构建的镜像就会包含你的网站代码,别人拉取镜像后不需要挂载volume就能直接运行。不过开发阶段还是推荐用volume挂载,方便实时修改代码;如果是生产环境或者要分享完整可运行的镜像,就用这种复制代码的方式。

额外小提示

  • 如果你后续修改了镜像内容(比如更新PHP扩展、修改配置),重新构建后记得重新打标签(可以更新latest标签,或者用版本号标签比如v1.0、v1.1),然后重新推送
  • 推送完成后,其他人只需要拿到你的docker-compose.yml,执行docker-compose up -d就能拉取所有镜像并启动整个环境(如果你的镜像设为私有,对方需要先登录你的Docker Hub账号)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:28:11