网站首页 > 精选文章 正文
前几天群里的小伙伴问我:为啥要用 Docker 部署网站或者是一些小工具?
单纯因为“简单”呀!
今天就给大家简单介绍一下 Docker 和 Docker Compose,并以 EasyImage 这个简单图床程序为例,讲一下如何实现快速部署。
什么是Docker?
Docker是一种容器化技术,将应用与依赖(如库、配置)打包成独立的“容器”,确保环境一致;且具有隔离性,每个容器相互隔离,共享主机系统内核,像是一个更轻量化的虚拟机。
通常只需改配置文件的访问端口、映射路径、环境变量等就可以快速部署,而不需要繁琐的“准备工作”(如:安装nginx、安装php、安装php拓展等)。
- 镜像(Image)
 - 容器的「安装包」,打包了程序、依赖和环境,开箱即用。
 - 映射
 - 把容器的访问端口、文件"挂钩"到主机,方便访问和持久化数据(通常只改左边的)。
 - 环境变量
 - 给容器传小纸条,配置参数(比如数据库地址),不用改代码就能切换设置。
 - 网络模式
 - 容器如何联网,是共用主机网络(host),还是开独立通道(bridge),或者完全隔离(none),docker run 没写则默认为 bridge 模式。
 
安装Docker
- 主流的面板软件(如:宝塔、1Panel)都可以在面板一键安装Docker。
 - 也可以手动安装docker、docker compose
 
实战EasyImage
以 EasyImage 简单图床 为例!(bt、1panel的docker 商店也提供了示例,这里主要介绍手动部署方法)
常规安装
如果你要以PHP的形式运行,需要准备的工作是:
Nginx + PHP≥7.0 + linux,且PHP安装Fileinfo、iconv、zip、mbstring、openssl扩展!
这些有有没没装完,几十分钟要吧?而且还是不能出错的情况下
Docker Run(直接启动)
项目示例:
docker run -itd \
  --name easyimage \ #容器名称
  -p 8080:80 \ #访问端口,改前面的即可,不要和已有的冲突
  -e TZ=Asia/Shanghai \ #环境变量,TZ为时区
  -v /root/data/docker_data/easyimage/config:/app/web/config \ #配置文件路径,按需改动
  -v /root/data/docker_data/easyimage/i:/app/web/i \ #存储路径,按需改动
  ddsderek/easyimage:latest #镜像修改你要用的端口、路径(这里用了18080端口访问,文件存放在 /opt/easyimage 下面):
docker run -itd \
  --name easyimage \
  -p 18080:80 \
  -e TZ=Asia/Shanghai \
  -v /opt/easyimage/config:/app/web/config \
  -v /opt/easyimage/i:/app/web/i \
  ddsderek/easyimage:latest运行前建议先在面板搜索和拉取镜像 ddsderek/easyimage:latest ,SSH 里面拉取镜像命令: docker pull ddsderek/easyimage:latest 。
无法拉取的话,自行配置加速地址。然后使用面板创建,或者是直接SSH里面运行!
宝塔部署
1Panel 部署
完成后访问 ip:18080
是不是开箱即用~ 当然这样还是觉得不够优雅?那么就用Docker Compose!
Docker Compose(编排模式)
Docker Compose 用一个Yaml文件的形式,同时配置一个或多个容器,轻松搞定依赖关系,同时方便迁移。
上面的简易图床也提供了一个 docker-compose.yaml 示例:
version: '3.3'
services:
  easyimage: #整个编排的名称
    image: ddsderek/easyimage:latest #镜像
    container_name: easyimage #容器名称
    ports:
      - '8080:80' #访问端口,改前面的即可
    environment:
      - TZ=Asia/Shanghai #环境变量,TZ为时区
    volumes:
      - '/root/data/docker_data/easyimage/config:/app/web/config' #配置文件路径
      - '/root/data/docker_data/easyimage/i:/app/web/i' #存储路径
    restart: unless-stopped如果没有提供yaml,可以自行转换,或者借助工具转换(多部署几次就得心应手了),推荐一个工具:https://www.composerize.com/
我们同样小小修改:
version: '3.3'
services:
  easyimage: #编排的名称
    image: ddsderek/easyimage:latest #镜像
    container_name: easyimage #容器名称
    ports:
      - '18080:80' #访问端口,这里我依旧改成了18080
    environment:
      - TZ=Asia/Shanghai #环境变量,TZ为时区
    volumes:
      - './config:/app/web/config' #配置文件路径,[./]是当前目录的意思
      - './i:/app/web/i' #存储路径,[./]是当前目录的意思
    restart: unless-stopped编排模式支持当前文件夹的形式,而且为了方便后期迁移、备份,我也更推荐你用这种形式,而不是实际路径!config、i 两个目录会在编排启动后自动创建!
宝塔部署
直接复制、粘贴、启动!就可以 ip:18080 进行访问了!是不是更快?
从生成的目录,可以看到宝塔的 compose 编排默认路径为:/www/server/panel/data/compose
1Panel 部署
同样如此!一键启动~ 完事
1panel 的默认 compose 编排默认路径则为:/opt/1panel/docker/compose
这就是为何我更建议你用 ./ 的当前文件夹,而不是实际路径,这样是最规范的(除非需要映射已有的文件夹,比如媒体库之类的)。
毕竟每家的docker管理器,默认编排目录会有所不同的!这样也是更方便备份、迁移。
命令行启动
选一个你想存放的路径,例如:/opt/docker/easyimage,将上面的命令保存成 docker-compose.yaml 文件
cd 到当前文件夹
cd /opt/docker/easyimage启动编排!然后就又弄完了~
docker compose up -d附几个的常规 compose 命令
- 启动编排:docker-compose up -d
 - 停止并删除所有容器、网络:docker-compose down (只会停止当前文件夹下的yaml编排)
 - 查看容器编排的运行情况:docker-compose ps
 
备份与迁移
备份
打包或拷贝编排所在的文件夹,例如:/opt/1panel/docker/compose/easyimage,当然你也可以整个 /opt/1panel/docker/compose 都备份。
恢复
创建编排,选择从yaml文件(有的面板是yml格式,如无法识别,可改成yaml后缀)
后言
如果是多个容器,那更是 compose 的拿手好活!一次启动,依赖关系、配置都能直接搞定,这里以wp+mysql为例:
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"  # 主机8080映射到容器80端口
    volumes:
      - /opt/docker/wordpress/html:/var/www/html  # 持久化网站数据
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
      WORDPRESS_DB_NAME: wpdb
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass  # 管理员密码(建议生产环境修改)
      MYSQL_DATABASE: wpdb
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
    volumes:
      - /opt/docker/wordpress/db:/var/lib/mysql  # 持久化数据库
    ports:
      - "3306:3306"  # 可选:暴露MySQL到主机启动后,直接连数据库都不用手动设置了,直接开箱即用!
当然对于 WordPress,一般不太推荐直接 Docker 启动,原因是官方的 Docker 镜像,并没有集成一些常见的 PHP 拓展~
容器是不是非常简单?而且 Docker compose 实际也不难!也是目前主流的部署方式。
需要注意的是yaml文件对缩进有比较严格的要求!只能用空格,不能用tab进行缩进!
猜你喜欢
- 2025-09-04 安防方案系统图制作利器——浙江大华图标库元素版V1.0
 - 2025-09-04 如何在Eclipse中搭建Zabbix源码的调试和开发环境
 - 2025-09-04 【FFmpeg笔记】 从零开始之滤镜_ffmpeg入门教程
 - 2025-09-04 Zabbix的智能运维体系建设实践,超详细Zabbix安装部署详情
 - 2025-09-04 Linux 命令总结,建议收藏_linux命令大全chm版
 - 2025-09-04 《ChangeFolderIcon v1.0.4:文件夹图标的定制化解决方案》
 - 2025-09-04 谷歌浏览器 Chrome 100 正式版发布:图标有变
 - 2025-09-04 轻松DIY一个专属个人网盘_轻松diy一个专属个人网盘下载
 - 2025-09-04 精品博文配置编译 及测试QT/Embedded 环境
 - 2025-09-04 乌克兰最高拉达通过法案,禁止在乌使用字母“Z”和“V”
 
- 最近发表
 
- 标签列表
 - 
- 向日葵无法连接服务器 (32)
 - git.exe (33)
 - vscode更新 (34)
 - dev c (33)
 - git ignore命令 (32)
 - gitlab提交代码步骤 (37)
 - java update (36)
 - vue debug (34)
 - vue blur (32)
 - vscode导入vue项目 (33)
 - vue chart (32)
 - vue cms (32)
 - 大雅数据库 (34)
 - 技术迭代 (37)
 - 同一局域网 (33)
 - github拒绝连接 (33)
 - vscode php插件 (32)
 - vue注释快捷键 (32)
 - linux ssr (33)
 - 微端服务器 (35)
 - 导航猫 (32)
 - 获取当前时间年月日 (33)
 - stp软件 (33)
 - http下载文件 (33)
 - linux bt下载 (33)
 
 
