Docker Compose部署案例

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本实验介绍了如何在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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
17天前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
57 15
Docker自建仓库之Harbor高可用部署实战篇
|
17天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
17天前
|
虚拟化 Docker Windows
window 10专业版部署docker环境
本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
41 2
window 10专业版部署docker环境
|
17天前
|
Linux Docker Windows
Docker配置https证书案例
本文介绍了如何为Docker的Harbor服务配置HTTPS证书,包括安装Docker和Harbor、修改配置文件以使用证书、生成自签名证书、配置证书以及验证配置的步骤。
23 2
Docker配置https证书案例
|
7天前
|
运维 Docker 微服务
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术普及的今天,管理多容器部署变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器应用,简化了部署和运维。本文介绍其基本概念、使用方法及优势,包括服务、项目、卷和网络等核心概念,并提供从安装到管理服务的详细步骤,助你轻松掌握 Docker Compose,提高开发效率和应用运维质量。
|
5天前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
17天前
|
存储 测试技术 数据安全/隐私保护
Docker自建仓库之Harbor部署实战
关于如何部署和使用Harbor作为Docker企业级私有镜像仓库的详细教程。
37 12
|
17天前
|
运维 数据安全/隐私保护 Docker
Docker自建仓库之Docker Registry部署实战
关于如何使用Docker Registry镜像搭建本地私有Docker仓库的实战教程,包括了下载镜像、创建授权目录和用户名密码、启动Registry容器、验证端口和容器、测试登录仓库、上传和下载镜像的详细步骤。
66 5
|
17天前
|
NoSQL 关系型数据库 数据库
JumpServer的Docker部署实战案例
JumpServer的Docker部署实战案例,详细介绍了JumpServer的概述、环境准备、基于Docker的快速部署步骤,以及如何访问JumpServer的WebUI。
20 0