【大白学Docker】使用Docker部署Wordpress博客系统

使用Docker部署Wordpress博客系统

1、实验目标

  • 掌握Docker镜像和容器的基本概念和常见操作方法;
  • 理解并掌握容器端口映射、目录映射等内容;
  • 会使用Dockerfile来构建镜像;
  • 会使用Docker compose来编排容器。

2、使用Dockerfile构建Apache容器

2.1 基本概念回顾

2.1.1 Docker镜像

Docker镜像是一个轻量级、独立的可执行软件包,包含运行应用所需的一切,包括代码、运行时、库、环境变量和配置文件。注意它是“游戏存档”,是静态的。

2.1.2 Docker容器

Docker容器是Docker镜像的实例,可以运行在任何支持Docker的环境中。容器包含应用程序和其依赖,但与宿主机隔离开来,保证了应用的一致性和可移植性。它是运行的,是动态的。

2.1.3 Docker端口映射

Docker端口映射是将容器内部的端口映射到宿主机的端口,使得外部可以通过宿主机的端口访问容器内的服务。一般网站运行在HTTP(80)端口,需要映射80到容器外面,让容器外面的其他的主机可以访问网站。

2.1.4 Docker目录映射是

Docker目录映射是将宿主机的目录映射到容器内,实现宿主机和容器之间的文件共享。就是说当一个程序(网站)访问容器内部的某个目录时,可以跳转到外面(宿主机)的目录,这样容器本身无需保存数据,一些生成的网页保存在宿主机的目录中,方便管理和维护。

2.1.5 Dockerfile使用

Dockerfile是一个文本文件,包含了一系列命令,用于自动化构建Docker镜像。主要编写通过Dockerfile,可以定义基础镜像、安装软件、设置环境变量等操作。然后运行命令,自动化生成所需的镜像,获得一个可以马上运行网站代码的容器。

2.1.6 Docker-compose

Docker-compose是一个工具,用于定义和运行多容器Docker应用程序。通过一个单独的文件(docker-compose.yml),可以配置应用的服务、网络和卷,实现容器的编排和集成。可以使用它同时部署Apache和MySQL容器,并设定端口映射、目录映射,完成网站的部署。

像WordPress这样的博客系统,需要一个网站服务和数据库服务。网站运行WordPress代码,展现出一个可以使用的博客系统,而所有产生的数据、配置参数等都保存在数据库中。这里就需要起码两个容器,一个是Apache容器,另外一个是MySQL容器。

3、使用Dockerfile构建Apache容器

3.1 构建容器

首先,创建一个apache目录,

mkdir /home/<你的用户>/apache

在目录中创建一个名为Dockerfile的文件。

vi Dockerfile

FROM centos:7

LABEL maintainer="黄大白"

# 使用阿里云配置软件仓库
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
    curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

# 安装必要软件,包括:epel、remi、php7.4等。
RUN yum install -y httpd epel-release && \
    rpm -ivh http://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm && \
    yum-config-manager --enable remi-php74 && \
    yum install -y php php-mysqli && \
    yum clean all

# 暴露 80端口
EXPOSE 80

# 运行容器时,启动httpd
CMD ["httpd", "-DFOREGROUND"]

3.2 构建Docker镜像

打开终端,进入Dockerfile所在的目录,执行以下命令构建镜像。

docker build -t apache:php .
# 最后这个是英文的句号,标识Dockerfile在当前目录中,漏掉会报错!

3.3 运行Apache容器

构建完成后,使用apache:php镜像创建容器myweb,绑定端口80:80,挂载目录/myweb:/var/www/html,并映射宿主机的80端口到容器的80端口。

docker run -itd --name myweb -p 80:80 -v /myweb:/var/www/html apache:php

这里/myweb为宿主机的目录,如果不存在,需要创建

mkdir /myweb

在/myweb里添加测试php页面index.php,内容如下:

vi /myweb/index.php

<?php phpinfo();?>

一切顺利就可以http://localhost或<ip>,查看php信息,证明容器已经成功运行,如图所示

在这里插入图片描述

此刻,Apache+PHP环境的容器制作成功!

4、使用MySQL镜像运行并初始化数据库

4.1 拉取MySQL镜像

首先,拉取官方的MySQL镜像。

docker pull mysql:latest

4.2 运行MySQL容器

运行MySQL容器,并设置root用户的密码。

docker run -itd -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123 mysql

一些说明:

  • docker run: 启动一个新的容器。
  • -d: 让容器在后台运行,即以“守护进程”模式运行。
  • -p 3306:3306: 将宿主机的3306端口映射到容器的3306端口。左侧的3306是宿主机的端口,右侧的3306是容器内MySQL服务监听的端口。
  • --name mysql: 为容器指定一个自定义的名称,这里为"mysql"。
  • -e MYSQL_ROOT_PASSWORD=123: 设置MySQL的root用户的密码,这里设置为"123"。这是通过环境变量传递配置的方式。
  • mysql: 指定要运行的镜像,这里是MySQL的官方镜像。

4.3 初始化数据库

可以使用MySQL客户端连接到运行中的容器,初始化数据库和用户。

docker exec -it mysql mysql -u root -p123 -v /mydb:/var/lib/mysql/

在MySQL客户端中执行以下SQL语句。

CREATE DATABASE wordpress;
show databases;

这里因为命令中映射了目录,会在宿主机/mydb下生成数据库文件,所有数据会保存在这里。

5、使用Docker compose部署Wordpress

基于配置的apache:php和mysql的容器,部署Wordpress博客系统。

5.1 WordPress系统简介

WordPress是一款开源的内容管理系统(CMS),用于创建并管理个人博客、商业网站或新闻网站,具有丰富的插件和主题生态系统。

5.2 下载并解压WordPress代码

访问https://cn.wordpress.org/download/ 下载WordPress包(文件后最是.tar.gz)
在这里插入图片描述

cd /home/user/Downloads/
# 解压代码
tar xzf wordpress-6.3-zh CN.tar.gz -C /myweb/

5.3 安装WordPress系统

WordPress系统自带安装引导程序,使用浏览器访问web服务,按照提示完成系统的安装。

数据库信息:

数据库名:wordpress

用户名:root

密码:123

数据库主机:填写宿主机的IP

如果提示信息,创建WordPress配置文件wp-config.php,内容为提示框中内容
在这里插入图片描述

在宿主机/myweb/wordpress下,创建配置文件wp-config.php,将上述提示框中内容复制到此文件内即可。

根据页面提示,继续安装指导提示成功。
在这里插入图片描述

登录管理台
在这里插入图片描述

5.4 编排容器运行WordPress系统

到这里还没完成哦,不要高兴太早!

我们还没使用docker compose

现在我们先停止所有容器:

#停止MySQL容器
docker stop mysql

#删除MySQL容器
docker rm mysql

#停止MyWeb容器
docker stop myweb

#删除MyWeb容器
docker rm myweb

5.4 编写docker compose

现在最后一个任务,就是编写docker compose 来了编排容器的运行,做到一键启动WordPress系统。

这个是docker-compose.yml内容,注意缩进和符号正确:

version: '3'  # 使用Docker Compose版本3
services:
  web:
    image: apache-php:7.4  # 设置容器使用的Apache + PHP镜像,替换为实际的镜像名称和版本
    restart: always  # 设置容器 down 掉后自动重启
    container_name: myweb  # 设置容器名称为 myweb
    ports:
      - "80:80"  # 将宿主机的80端口映射到容器的80端口
    privileged: true  # 设置容器的权限为root
    volumes:
      - /myweb:/var/www/html  # 设置容器挂载目录,将/myweb映射到容器的/var/www/html
    depends_on:
      - db  # 指定 web 服务依赖于 db 服务
  db:
    image: mysql:latest  # 使用最新版本的MySQL镜像
    restart: always  # 设置容器 down 掉后自动重启
    container_name: mysql  # 设置容器名称为 mysql
    ports:
      - "3306:3306"  # 将宿主机的3306端口映射到容器的3306端口
    privileged: true  # 设置容器的权限为root
    volumes:
      - /mydb:/var/lib/mysql  # 设置容器挂载目录,将/mydb映射到容器的/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123  # 设置MySQL管理员密码
      MYSQL_DATABASE: wordpress  # 创建MySQL数据库名为 wordpress

编排并启动myweb和mysql两个容器

docker compose up -d

#返回结果如下:
Creating network "root_default" with the default driver
Creating mysql ... done
Creating myweb ... done

查看两个容器运行状态

docker compose ps

#返回结果如下:

    Name          Command      State          Ports
--------------------------------------------------------
mysql     docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp
myweb     apache2-foreground           Up      0.0.0.0:80->80/tcp

这个时候,使用浏览器访问web,应该可以看到网页了。
在这里插入图片描述

6、小结

通过以上步骤,我们成功地使用Docker部署了一个包含Apache、MySQL和Wordpress的应用系统。这种容器化的部署方式具有高度的灵活性和可移植性,为开发和运维工作带来了便利。

同时,通过Docker的基本概念和工具的使用,我们深入理解了容器技术的运作原理和优势。

把事情做完就挺不容易了,为自己点赞!

  • 18
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker是目前比较流行的容器化技术,其优点在于方便管理和部署应用程序。而Halo博客系统是一款基于Java开发的博客系统,其部署过程比较复杂,需要安装JDK、MySQL等依赖。本文将介绍如何使用Docker部署Halo博客系统。 1. 安装Docker 首先需要在服务器上安装Docker,可以参考官方文档进行安装。 2. 创建Docker镜像 将Halo博客系统打包成Docker镜像,可以通过Dockerfile或者docker-compose.yml文件进行创建。在这里我们以Dockerfile为例。 先创建一个空目录,将Halo博客系统的jar包和配置文件拷贝到该目录下: ``` mkdir -p /opt/halo cp -r halo.jar /opt/halo/ cp -r application.properties /opt/halo/ ``` 然后创建Dockerfile: ``` FROM openjdk:8-jre-alpine MAINTAINER yourname <[email protected]> ADD halo.jar /opt/halo/halo.jar ADD application.properties /opt/halo/application.properties WORKDIR /opt/halo CMD ["java", "-jar", "halo.jar", "--spring.config.location=application.properties"] EXPOSE 8888 ``` 其中FROM指定了基础镜像,ADD将jar包和配置文件拷贝到镜像中,WORKDIR指定工作目录,CMD指定应用启动命令,EXPOSE指定容器监听的端口。 使用docker build命令创建镜像: ``` docker build -t halo . ``` 其中halo为镜像名称,可以根据需要自行修改。 3. 启动容器 使用docker run命令启动容器: ``` docker run -d -p 8080:8888 --name halo-demo halo ``` 其中-d表示启动守护进程,-p将容器的8888端口映射到主机的8080端口,--name指定容器名称,halo为镜像名称。 启动成功后,在浏览器中输入http://localhost:8080访问Halo博客系统即可。 以上就是使用Docker部署Halo博客系统的步骤,相信通过这个实战,大家可以更好地了解云原生中Docker使用部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值