当你看到这篇文章的时候,表明你已经有docker的基础知识了,或者可以看上一篇文章 Docker 入门教程

传统的使用wordpress搭建网站,意味着你需要搭建以下四个环境:

  • php;
  • apache / nginx;
  • mysql;
  • wordpress;

这里面主要是php的搭建真心麻烦,各种依赖,版本不兼容,然后还有php跟mysql的插件,我是吃了它很大的苦,寻求让我快乐的方法,知道我发现了它。使用docker容器技术5分钟快速搭建wordpress,相信我,真的是五分钟。

一台linux服务器

你需要一台linux或者ubuntu服务器,阿里云或者腾讯云的都可以。

新建并启动 MySQL 容器

$ docker container run \
-d \
--rm \
--name wordpressdb \
--env MYSQL_ROOT_PASSWORD=123456 \
--env MYSQL_DATABASE=wordpress \
mysql:5.7

上面的命令会基于 MySQL 的 image 文件(5.7版本)新建一个容器。该命令的五个命令行参数的含义如下。

  • --rm:停止运行后,自动删除容器文件。
  • --name wordpress:容器的名字叫做wordpress。
  • --env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码。
  • --env MYSQL_DATABASE=wordpress:向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库(本例是WordPress)。

新建并启动 WordPress 容器

基于官方的 WordPress image,新建并启动 WordPress 容器。

docker container run \
-d \
-p 8080:80 \
--rm \
--name wordpress \
--env WORDPRESS_DB_PASSWORD=123456 \
--link wordpressdb:mysql \
--volume "$PWD/wordpress":/var/www/html \
wordpress

该命令执行完后,会在当前目录下生成一个wordpress目录。

-p 8080:80:将容器的 80 端口映射到当前物理机的8080端口。
--volume "$PWD/wordpress":/var/www/html:将容器的`/var/www/html`目录映射到当前目录的wordpress子目录,操作$pwd/wordpress目录,相当于操作容器里面的/var/www/html目录了。

这个时候你想浏览器输入公网ip : 8080端口,其实是访问不了的,有两个原因:

  • 有的人可能没有这个问题,比如我用的是阿里云的服务器,8080端口默认没有加入安全组,需要去阿里云控制台新建安全组,把8080端口加进去;
  • 容器里面的wordpress数据库配置文件没有修改,这里通过$pwd/wordpress映射,修改。

修改WordPress配置文件

目前有两个容器

[root@iZbp180j96p8y98l1s1oucZ ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f03c15abfe54 wordpress "docker-entrypoint.s…" 17 hours ago Up 17 hours 172.24.49.41:8080->80/tcp wordpress
f6274d57162a mysql:5.7 "docker-entrypoint.s…" 18 hours ago Up 18 hours 3306/tcp, 33060/tcp wordpressdb

进入wordpress容器,通过names名为wordpress,或者container id为f03c15abfe54,都可以进入容器,命令格式为:

[root@iZbp180j96p8y98l1s1oucZ ~]# docker exec -it f03c15abfe54 /bin/bash
root@f03c15abfe54:/var/www/html# cd wp-content/
root@f03c15abfe54:/var/www/html/wp-content# ll
bash: ll: command not found

通过exit命令即可退出当前容器环境,返回到linux命令行。

可以看到,在容器里面操作及其不方便,由于前面将容器的/var/www/html目录映射到当前目录的wordpress子目录,我们可以直接操作当前目录下的wordpress目录。

[root@iZbp180j96p8y98l1s1oucZ ~]# ll
total 4
drwxr-xr-x 5 33 tape 4096 May 27 12:35 wordpress
[root@iZbp180j96p8y98l1s1oucZ ~]# vim wordpress/wp-config.php

需要修改下面三个

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') ); /** MySQL database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'root') ); /** MySQL database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', '123456') );

然后浏览器输入公网ip:8080,即可进去wordpress安装界面,跟着向导,几分钟就完成了。

到这里,如果不出意外的话,你的网站应该已经可以访问了,接下来就是绑定到域名以及写文章去丰富内容了。


如果想进入mysql容器,也是同样类似的命令:

[root@iZbp180j96p8y98l1s1oucZ ~]# docker exec -it f6274d57162a /bin/bash
root@f6274d57162a:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 812
Server version: 5.7.34 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.00 sec) mysql> exit;
Bye
root@f6274d57162a:/# exit
exit

Docker五分钟搭建Wordpress的更多相关文章

  1. Debian 上面五分钟搭建 WordPress - 博客/网站平台

    没有废话,步骤如下: 下载安装软件,MySQL Apache PHP sudo aptitude install mysql-server mysql-client ##安装 MySQLsudo ap ...

  2. Centos 7使用docker部署LAMP搭建wordpress博客系统

    0.简要概述 LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案.docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级.可移植的容器. ...

  3. 五分钟搭建一个基于BERT的NER模型

    BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...

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

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

  5. [原]五分钟搭建gitserver

    本来在忙一些事情,结果刚才突然收到一个临时的事情,号称很着急. 问了一下,原来是需要在本地搭建一个git库,但其实之前我是有做过gitserver的,不过是在阿里云(部分分布在青云)上,而且目前在使用 ...

  6. 五分钟搭建博客系统 OK?

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 概要: 通过 Docker Compose 在使用Docker容器构建的隔离环境中轻松运行 WordPress.在开始之前,请确保已安 ...

  7. docker一分钟搭建nginx服务器

    运行nginx服务 拉取: docker pull nginx:1.17.9 运行: docker run -d --name nginx -P 80:80 nginx:1.17.9 -d表示在后台启 ...

  8. 五分钟搭建起一个包含CRUD功能的JqGrid表格

    之前的项目也曾用过JgGrid对它的基本功能也是略有了解,网上有个国外的开源的项目,但是不适合个人的风格,所以花了3天空余的时间封装了下JqGrid,也算是参加开发工作10个月以来写的第一个比较完整的 ...

  9. 负载均衡LVS之DR(附:NFS共享存储) 五分钟搭建手册

    一:DR-模式 调度器Ip:192.168.1.254 服务器ip:192.168.1.1/192.168.1.2 VIP:192.168.1.10 ——配置负载均衡调度器: 关闭重定向响应配置: V ...

随机推荐

  1. Spring Boot demo系列(一):Hello World

    2021.2.24 更新 1 新建工程 打开IDEA选择新建工程并选择Spring Initializer: 可以在Project JDK处选择JDK版本,下一步是选择包名,语言,构建工具以及打包工具 ...

  2. matlab通用命令

    常用命令 命令 命令说明 cd 显示或改变当前文件夹 dir 显示当前文件夹或指定目录下的文件 clc 清除工作窗中的所有显示内容 home 将光标移至命令行窗口的最左上角 clf 清除图形窗口 ty ...

  3. Ionic5沉浸式状态栏 适配全面屏

    1. 在platforms/android/app/src/main目录中找到AndroidManifest.xml文件,修改文件中manifest → application → activity标 ...

  4. G - G ZOJ - 2723 (素数打表+set)

    Prime Number Definition An integer greater than one is called a prime number if its only positive di ...

  5. day-26-封装-property装饰器-反射

    一.super进阶 在多继承中:严格按照mro顺序来执行 super是按照mro顺序来寻找当前类的下一类 在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法 在py2中的 ...

  6. 13- APP接口测试以及postman使用

    postman安装与操作 ---------------------- 接口操作图片 -------------------- 一.postman操作key值:来源于聚合   请求-->聚合-- ...

  7. AliCrackme_2题的分析

    作者:Fly2015 AliCrackme_2.apk运行起来的注册界面,如图. 首先使用Android反编译利器Jeb对AliCrackme_2.apk的Java层代码进行分析. 很幸运,就找到了该 ...

  8. Python中的BeautifulSoup模块

    目录 BeautifulSoup Tag NavigableString BeautifulSoup Comment 遍历文档树 直接子节点 所有子孙节点 ​ 节点内容 搜索标签 CSS选择器 Bea ...

  9. TCP的三次握手和四次挥手和UDP协议

    目录 TCP 三次握手 四次挥手 为什么建立连接是三次而断开连接是四次呢? TCP和UDP的区别 TCP数据包的封装 UDP数据包封装 SCTP SYN Flood泛洪攻击 TCP TCP(Trans ...

  10. HTTP自定义Header-(SOCKET-TCP)

      HTTP自定义Header-TCP 前几天弄一些东西,需要在发送http请求的时候自定义http头,找了几个库用着很不爽.有的把Cookie直接干掉了,还自己在头里加了版权,最后终于忍不了了.在网 ...