Docker Compose部署案例

简介: 本实验介绍了如何在DockerCompose中部署WordPress

Docker Compose部署案例


1. 创建资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息

2. Docker Compose常用命令

在前面得实验中我们讲解了docker compose配置文件得常见用法,接下来我们再来学习一下docker compose得常用命令。本次实验使用了带有图形界面的实验环境,我们可以在命令行和图形界面直接切换。

  1. 环境准备

首先我们切换到Web Terminal命令行页面。进行试验环境准备。首先安装docker compose,在安装成功后使用vi创建docker-compose.yml文件,在docker-compose.yml文件中加入下列内容。

yum install -y docker-compose-plugin
vi docker-compose.yml

注意使用vim编辑器时:

  1. 需要先按i键进入编辑模式。
  2. 编辑完成之后按esc退出编辑模式。
  3. 然后按大写的ZZ保存并退出vim。

说明:注意设置MYSQL_ROOT_PASSWORD的值,即[MYSQL密码]。

version: "3.9"
services:
    web:
       container_name: web
       image: "httpd:latest"
       ports:
          - "5000:80"
          - "6000:8000"
    db:
       container_name: db
       image: "mysql"
       volumes:
          - "mysql-vol:/var/lib/mysql"
       environment:
          MYSQL_ROOT_PASSWORD: "[MYSQL密码]"
volumes:
    mysql-vol: {}

配置文件编写完毕后,我们通过docker compose来启动容器。

docker compose up -d

  1. 类Docker命令

接下来我们来测试下面的3条docker compose命令,这3条命令的用法和原生docker命令类似,不同的是如果命令需要指定特定容器,我们需要在命令中使用service名来代替容器名。

docker compose exec db ls
docker compose cp docker-compose.yml db:/root/
docker compose exec db bin/bash -c "cat /root/docker-compose.yml"

  1. 容器的启停删除

接下来我们来看通过docker compose进行容器服务组暂停/恢复,停止/重开,删除命令,这几条命令类似于docker compose up,只要使用默认配置文件docker-compose.yml,或者十月-f参数指定配置文件即可,不再需要指定容器名。

docker compose pause
docker compose unpause
docker compose stop
docker compose restart
docker compose down

3. 部署WordPress论坛

之前的实验中我们介绍了Docker和Docker Compose的大部分常见用法。接下来我们来部署一个实际WordPress论坛作为Docker的综合案例。

启动wordpress论坛至少需要创建两个容器,一个mysql数据库容器,和一个运行wordpress的apache容器,除此之外如果安装了redis缓存插件,则还需部署redis容器。因此这次我们编写三个YML文件,通过Docker Compose来部署这三个容器。

  1. 定义MySQL配置

首先我们先使用vi来编写db.yml作为MySQL的部署文件。在标准MySQL容器中,通过EntryPoint设置了启动命令,因此我们通过command设置启动参数。

除此之外标准的MySQL容器可以通过多种环境变量对服务进行配置,此处我们使用MYSQL_DATABASE环境变量指定默认数据库。

说明:注意设置MYSQL_ROOT_PASSWORD的值,即[MYSQL密码]。

vi db.yml
version: "3"
services:
  db:
    image: mysql:8.0
    command:
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: [MySQL root账号密码]
      MYSQL_DATABASE: wordpress
volumes:
  db_data:

  1. 定义Redis配置

接下来我们使用vi来编写cache.yml作为Redis的部署文件。

vi cache.yml
version: "3"
services:
  cache:
     depends_on:
       - db
     image: redis
     network_mode: "service:db"
     restart: always

  1. 定义WordPress配置

最后我们使用vi来编写app.yml作为WordPress的部署文件。在WordPress配置中,需要依赖db和cache两个服务。使用Container网络模型,绑定db服务的网卡。

同时我们希望将在宿主机的8000端口上发布应用的服务。由于WordPress服务共享了db服务的网卡,因此我们需要在db服务的网卡中进行端口绑定,此处我们可以使用属性值的多次定义功能。

在YML配置文件中,相同的属性值可以在不同的文件中进行定义,在docker compose加载的时候会将所有的属性值合并后统一处理,因此我们可以在app.yml中为db定义ports端口映射字段。

除此之外我们还可以在这里对db中的MYSQL_USER和MYSQL_PASSWORD两个环境变量的属性值进行覆盖。YML属性值允许覆盖,且以最后定义的为最终值。

在对db的环境变量覆盖时,我们可以使用&wp_passwd来将属性值定义为锚点。并且在wordpress中的WORDPRESS_ROOT_PASSWORD使用*wp_passwd来引用锚点作为属性值,这种写法表示这个属性值引用了锚点位置的属性值。也就是说在WordPress中数据库的root用户密码和db.yml中数据库的默认用户密码一致。这种写法可以避免因为拼写错误导致的数值不一致。

说明:注意设置MYSQL_ROOT_PASSWORD的值,即[MYSQL密码]。

vi app.yml
version: "3"
services:
  db:
    ports:
      - "8000:80"
    environment:
      MYSQL_ROOT_PASSWORD: &wp_passwd [MySQL wordpress账号密码]
  app:
    depends_on:
      - db
      - cache
    image: wordpress:6.0
    network_mode: "service:db"
    restart: always
    environment:
      WORDPRESS_DB_HOST: 127.0.0.1
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: *wp_passwd

  1. 启动容器

配置文件编写完毕后我们就可以启动Project。这里需要注意的时,我们将三个服务写在了三个不同的文件中,当docker compose需要引用多个配置文件时,我们只需要在参数列表中添加多个-f [配置文件名]的方式即可。

docker compose -f db.yml -f cache.yml -f app.yml -p wp up -d

4. 切换到图形界面

WordPress论坛的容器部署成功后,我们就可以进入图形界面对WordPress论坛进行初始化工作了。本小节我们来介绍接入图形界面的方法

  1. 切换到图形界面

首先我们点击网页的左上角的切换到远程桌面按钮,点击该按钮后,主界面将从web terminal切换到远程桌面

  1. 启动浏览器

在远程桌面中,有三个图标,我们点击chromium网页浏览器,后续的操作我们都将在浏览器中进行

  1. 获得ECS公网地址

在进行配置之前我们还需要获得实验服务器的公网IP。我们在界面的左侧选择云产品资源。然后再下方面找到ECS公网地址。我们记录这个地址,该地址将在后面的实验中被用到。

5. 初始化WordPress论坛

接下来我们将在图形界面中的chromium浏览器对WordPress进行图形化配置。

  1. 在浏览器中访问WordPress

在浏览器中输入http://[ECS公网地址]:8000,即可进入WordPress初始化界面。

  1. 初始化WordPress

在初始化界面中我们首先选择wordpress的界面语言,并且按"继续"

继续配置wordpress的相关信息,输入论坛名称,用户名,密码等,在邮箱输入栏输入符合标准的邮箱格式即可。然后按"安装WordPress"

  1. 登录WordPress

安装之后点击登录,即可进入登录界面,在登陆界面中输入上一个步骤填写的用户密码并点击登录。

登录之后即可进入wordpress管理后台。后台界面主要由管理员使用。

接下来我们进入wordpress前台浏览界面。输入网址 http://[ECS公网地址]:8000。出现如下浏览界面即说明wordpress安装成功。

6. 在WordPress中安装插件

  1. 插件管理

  1. 安装reids插件

  1. 切换至【WebTerminal】,执行如下命令验证插件生效。

docker exec -it wp-cache-1 redis-cli
keys *

实验地址:https://developer.aliyun.com/adc/scenario/d72359117ef14556a047fbbc19c0d3bc

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1980 5
|
5月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
554 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
4月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
236 5
|
5月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
504 12
docker 部署 sftp
|
5月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
1914 6
|
4月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1407 7
|
4月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
3387 8
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
788 4
|
5月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
295 13