实现多个容器之间的协同,搭建Wordpress网站,要用到3个容器,Wordpress、MariaDB和Nginx

拉取镜像

使用docker pull拉取3个镜像:

$ sudo docker pull wordpress:5
$ sudo docker pull mariadb:10
$ sudo docker pull nginx:alpine

这张图可以描绘网站的架构图:

MariaDB作为网站的关系型数据库,使用3306端口

Wordpress是中间的应用服务器,使用MariaDB来存储数据,使用80端口

Nginx是反向代理,对外暴露80端口,将请求转发给Wordpress

启动MariaDB

先使用如下命令运行MariaDB,须要配置几个环境变量,用--env参数来制定启动时的数据库、用户名和密码

$ sudo docker run -d --rm \
> --env MARIADB_DATABASE=db \
> --env MARIADB_USER=wp \
> --env MARIADB_PASSWORD=123 \
> --env MARIADB_ROOT_PASSWORD=123 \
> mariadb:10
a06fa412c71f18ddc2ed1f982fdc08f93bebe030a46d313d8fd30aa5cb522f6c

启动之后,可以使用docker exec命令,执行数据库的客户端工具mysql,验证其是否正常运行:

$ sudo docker exec -it 83b mysql -u wp -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.8.3-MariaDB-1:10.8.3+maria~jammy mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| db |
| information_schema |
+--------------------+
2 rows in set (0.001 sec) MariaDB [(none)]>

如上所示,成功执行了一条语句

查看MariaDB的IP地址:

$ sudo docker inspect 83b | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",

启动Wordpress

接下来启动Wordpress,同样要用--env参数来指定一些环境变量:

$ sudo docker run -d --rm \
> --env WORDPRESS_DB_HOST=172.17.0.2 \
> --env WORDPRESS_DB_USER=wp \
> --env WORDPRESS_DB_PASSWORD=123 \
> --env WORDPRESS_DB_NAME=db \
> wordpress:5
1a1cc76293c8224afb8a82d3c6bbfec560f7b4a413d8789de82f95f06df81471

WORDPRESS_DB_HOST必须是MariaDB的IP地址,否则无法连接到数据库,这里没有为WordPress使用-p映射端口号,之后将部署一个Nginx反向代理,将请求转发给WordPress的端口号,配置Nginx的反向代理必须知道WordPress的IP地址,同样可以用docker inspect命令查看:

$ sudo docker inspect a47 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",

启动Nginx

Wordpress和MariaDB虽然使用了80和3306端口,但被容器隔离,外界不可见,使用Nginx进行端口映射,才能够外界80端口收发数据

在当前宿主机的工作目录下编辑一个Nginx配置文件wp.conf:

server {
listen 80;
default_type text/html; location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_pass http://172.17.0.3;
}
}

运行Nginx容器,并进行端口映射和目录挂载:

$ sudo docker run -d --rm \
> -p 80:80 \
> -v `pwd`/wp.conf:/etc/nginx/conf.d/default.conf \
> nginx:alpine
b1847e563c5d05408ff61036eaad20eaf5c57ff1eee74e6d4f6bc4a380bd1fd3

使用docker ps查看3个进程的情况:

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1847e563c5d nginx:alpine "/docker-entrypoint.…" 59 seconds ago Up 58 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp happy_murdock
1a1cc76293c8 wordpress:5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 80/tcp stoic_ellis
a06fa412c71f mariadb:10 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp heuristic_wiles

浏览器访问80端口,来到了wordpress的安装页面:

Dokcer应用部署(搭建Wordpress网站)的更多相关文章

  1. Linux下安装搭建WordPress网站

    WordPress简介 WordPress 是一种使用 PHP语言和 MySQL数据库开发的开源.免费的Blog(博客,网志)引擎,用户可以在支持 PHP 和 MySQL 数据库的服务器上建立自己的 ...

  2. LNMP环境下部署搭建wordpress

    1. 下载WordPress安装包 访问官方网站https://cn.wordpress.org/ 点击Download.tar.gz下载linux平台安装包 2. 安装软件 2.1.上传安装包 使用 ...

  3. 12、利用docker快速搭建Wordpress网站

    一.准备工作 结构图: 用户访问页面,Nginx将请求进行转发,如果请求的是php页面,则通过FastCGI转发给后端php进行处理:如果非php页面,则直接返回静态页面. 关键点: mysql.ph ...

  4. 如何在VPS上搭建WordPress博客网站(史上最全图文教程)

    由于现在很多人仍然使用共享主机,所以我决定写这篇教程,教你如何设置自己的虚拟专用服务器(VPS),以便为启动一个 WordPress 网站准备好所有必要的服务. 为什么共享托管不是最好的选择? 你的 ...

  5. LNMP环境下搭建wordpress

    WordPress 下载WordPress安装包,可以直接wget获取也可以ftp上传,解压到/usr/share/nginx/html/blog-wp,访问index.php即进行安装:   wor ...

  6. 利用XAMPP本地搭建WordPress博客

    现在越来越多的人利用WordPress搭建了自己的博客网站,我也是一样,但是还有一些人不知道怎么搭建WordPress网站的方法,因为怕弄 不好,所以也就没有花钱去做,所以这里我就讲讲怎么样利用XAM ...

  7. 5分钟搭建wordpress个人博客网站——宝塔傻瓜式部署,无坑系列,附赠主题和md插件[2021-12-31]

    一.前言 自从买了服务器,小编已经马不停蹄的学了两天服务搭建的知识,问了很多大佬,快速搭建自己的博客网站.有四种方式,我在这里全部分享给大家.自己已经搭建好,欢迎大家过来看一下,给你提供个思路哈! 小 ...

  8. Wordpress 网站搭建及性能监控方法详解!

    前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统.并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站.企业网站 ...

  9. LNMP架构之搭建wordpress博客网站

    系统环境版本 [root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@db02 ~]# uname -a Lin ...

  10. 用lnmp架构部署wordpress网站详细步骤

    用lnmp架构部署wordpress网站 ①.下载和上传网站代码 用winscp或者xftp, 或者xshell下执行rz命令进行上传网站的包文件. ②.解压程序代码,并将程序代码保存到站点目录,并进 ...

随机推荐

  1. iOS Unity 项目解析

    本文旨在记录Unity 导出的iOS 项目笔记,另带接入SDK的终极方案,顺带对比Android 项目 1蓝色的目录 Data 这个就是项目的数据,每个项目不一样也就是这个目录不一样,是不是可以把这个 ...

  2. Pytorch slp singleLayerPerceptron 单层感知机

    单层感知机 \[\begin{aligned} & y = XW + b \\ & y = \sum x_i*w_i+b\\ \end{aligned} \] Derivative \ ...

  3. vue几种插槽的使用方法

    参考文档:https://blog.csdn.net/weixin_49217200/article/details/118496525 参考文档:https://blog.csdn.net/ct52 ...

  4. What is Weight Lifting?

    Weight lifting is the process of lifting items of great mass in order to increase the muscle size an ...

  5. 自定义DOM事件函数封装

    非原生DOM触发,个性化定制的自定义事件. currentTarget(DOM对象):要触发事件的元素节点. type(字符串):触发的事件类型,例如"keydown". bubb ...

  6. gitee使用

    1.github的国内跳转 github国内无法直接访问,所以直接使用gitee导入github工程 https://gitee.com/     2.虚拟机配置ssh公钥 https://gitee ...

  7. 关于jsp页面中的小细节们

    细节一:利用jsp判断文本框的输入格式是否正确 也就是主要利用script标签进行判断,主要用到的是正则表达式(判断是否为整数): 再加上if语句的配合,就能够在文本框的格式不正确时,发出错误警告啦! ...

  8. Python地理分析库whitebox在Anaconda中的配置

      本文介绍在Anaconda环境下,安装Python中的一个高级地理空间数据分析库whitebox的方法.   首先,我们打开"Anaconda Prompt (Anaconda)&quo ...

  9. GUI编程--3 Swing

    GUI编程-3 Swing 3.1 JFrame 窗口 窗口: package com.ssl.lesson04; import javax.swing.*; import java.awt.*; p ...

  10. Nacos 服务发现

    更多内容,前往 IT-BLOG 一.Nacos 简介 Nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现.配置管理.服务治理的综合型解决方案.Nacos 使服务更容易注册,并通过 DNS ...