【详细】Docker基于Ubuntu+Nginx部署搭建迁移WordPress

Share

Docker-Compose 是一个命令行工具,用于部署和管理多个 docker 容器。Compose 是用 Python 编写的,所以也可以使用 pythonpip 命令安装。当然,还是那句话,如果直接是云主机上操作的话,还是先备份为好,防止数据丢失!

一、开始搭建wordpress(自己的办法,有效)

我们将使用 Nginx、 MySQL 和 PHP-FPM 部署‘ WordPress’,每个服务都有自己的容器。比如我喜欢创建新的文件夹,所以大家随便创建,比如我创建的/wordpress-compose,然后进入这个文件夹下。

前提条件:

已经装好docker-compose

Ubuntu环境

然后在建好的文件夹下建立以下文件夹:

touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/

建立的文件说明:

-docker-compose.yml文件来启动WordPress等服务容器的

– nginx/: 这个目录用于额外的 nginx 配置,比如虚拟主机,vps,云主机等。

– db-data/: mysql 的’/var/lib/mysql’中的 sql 被挂载到 db-data 目录。

– logs/: 应用程序日志。

wordpress/:所有的 wordpress 文件都可以在那个目录中找到。

接下来,在 nginx 目录中,为我们的 wordpress 虚拟主机中创建一个新的配置文件。

vim nginx/wordpress.conf

server {
    listen 80;
    server_name 你的ip;
 
    root /var/www/html;
    index index.php;
 
    access_log /var/log/nginx/hakase-access.log;
    error_log /var/log/nginx/hakase-error.log;
 
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

接下来,开始配置 Docker-Compose,编辑 vim docker-compose.yml

version: '3.3'
  
services:
 nginx:
    image: nginx:latest
    ports:
        - '80:80'
    volumes:
        - ./nginx:/etc/nginx/conf.d
        - ./logs/nginx:/var/log/nginx
        - ./wordpress:/var/www/html
    links:
        - wordpress
    restart: always


 mysql:
    image: mysql:5.7.32
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=aqwe123
    restart: always


 wordpress:
    image: wordpress:6.1-php8.0-fpm
    ports:
        - '9000:9000'
    volumes:
        - ./wordpress:/var/www/html
    environment:
        - WORDPRESS_DB_NAME=wpdb
        - WORDPRESS_TABLE_PREFIX=wp_
        - WORDPRESS_DB_HOST=mysql
        - WORDPRESS_DB_PASSWORD=aqwe123
    links:
        - mysql
    restart: always

大家最好去文档看下,里面的内容是什么,理解下里面的相互依赖的关系,还要注意里面的格式,不然会报错的,献上文档说明:通过docker在ubuntu上安装wordpress之二:安装wordpress_Mark的博客-CSDN博客

wordpress镜像地址:Docker Hub

这个时候,我们的 docker-compose 配置已经就绪,开始运行 Docker-compose,命令:

docker-compose up -d

成功之后会显示:

接下来输入docker-compose ps查看是不是已经开启了容器了,如下图就已经开启了

当然如果报错了,想看日志,可以输入命令:

docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress

注意的是,当你用nginx来搭建的话,需要去改下nginx.conf文件,当nginx启动成功后,我们只需要修改配置文件,就可以实现多个域名和https访问的需求啦。nginx的配置文件有两个,/etc/nginx/nginx.conf和/etc/nginx/conf.d/default.conf。点开看nginx.conf的话,会发现里面引入了default.conf的内容,也就是说这是一个文件分成两个文件来写。

最后就开始安装wordpress了,直接输入你的ip地址就进入安装界面了,这里就不说了!

二、一步一步docker pull来搭建也是可以的

如果不想用配置文件的方法,也可以一步一步来完成,拿nginx举例,比如很多网上的教程好像是使用 Debian 的 Apache来搭建wordpress,而有些小伙伴喜欢使用nginx,也可以换掉

1.使用docker search nginx命令获取ngin镜像列表

2.使用docker pull nginx命令拉取nginx镜像到本地,此处我们获取排名第一的是官方最新镜像,其它版本可以去DockerHub查询

3.使用docker images nginx命令,查看我们拉取到本地的nginx镜像IMAGE ID

创建nginx容器 首先测试下nginx镜像是否可用,使用docker run -d –name mynginx -p 80:80 231d创建并启动nginx容器

  • -d 指定容器以守护进程方式在后台运行
  • –name 指定容器名称,此处我指定的是mynginx
  • -p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
  • 231d 是nginx的镜像IMAGE ID前4位

命令执行后返回了容器ID,ef1f3b….,此时我们已经成功创建了nginx容器,

使用docker ps命令,可以查看到正在运行的nginx容器,映射端口为80

在浏览器访问NGINX主机,会看到nginx欢迎页,如果你是云服务器,请记得开放对应的外网端口!!!!

到这里我们已经完成了nginx容器的搭建,但是此时还有个问题,我们如何修改nginx的配置文件? 这里有两种方式解决这个问题:

每次都进入到nginx容器内部修改。适合改动少,简单使用的情况 1.执行docker exec -it ef bash进入到nginx容器内部,

  • exec 命令代表附着到运行着的容器内部
  • -it 是 -i 与 -t两个参数合并写法,-i -t 标志着为我们指定的容器创建了TTY并捕捉了STDIN
  • ef 是我们要进入的容器Id
  • bash 指定了执行命令的shell

进入到nginx容器内部后,我们可以cd /etc/nginx,可以看到相关的nginx配置文件都在/etc/nginx目录下

而nginx容器内的默认首页html文件目录为/usr/share/nginx/html,日志文件位于/var/log/nginx

执行exit命令我们可以从容器内部退出,当然后面会介绍更方便的外部挂载方法!

三、docker其他相关操作

docker关机和清理操作

该命令docker-compose down将删除容器和默认网络,但会保留WordPress文件和数据库。

该命令docker-compose down --volumes将删除容器,默认网络和WordPress数据库。

卸载谋个镜像:

先docker stop 镜像id

然后docker rm 镜像id

如果一键删除所有容器和镜像,可以:

1、杀死运行的容器:

docker kill $(docker ps -a -q)

2、删除所有容器:

docker rm $(docker ps -a -q)

3、强制删除所有镜像:

docker rmi -f $(docker images -q)

其他指令:

1、docker下进入mysql命令行

先使用 docker ps 命令,显示都有哪些容器:

再使用 docker exec -it ID bash 或者 docker attach 容器ID 命令开启MySQL容器,即可进入MySQL了

最后可通过exit或者Ctrl+P+Q,退出容器!当然想重启所有容器的命令:docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

2、注意docker容器内是不带vim,需要安装下

3、vi编辑模式无法右键复制粘贴的问题:

因为docker里面的vi是visual模式的,所以先看下vim的版本,比如我的是8.1

然后defaults.vim这个文件,在在mouse=a的=前面加个-即可!

4、docker 安装 jumpserver 服务

前提:已安装好docker和docker-compose

跟之前一样,先创建对应的文件夹,比如jump


mkdir -p /jump
cd jump/

接下来开始下载jms的docker项目:

git clone https://github.com/wojiushixiaobai/docker-compose.git

然后你会在jump文件夹看到

接下来,就是常规的编辑docker-compose.yml了,具体可以去文档看下需要改什么,自己根据需要修改即可:

改完保存,开始用docker-compose启动项目,注意要在文件夹下面,不要去别的文件夹下:

docker-compose up -d

完成之后,docker ps 一下看下有没有成功:

为了防止端口冲突,也可以再docker-compose.yml里面修改下nginx模块的80端口,把80:80改为88:80,具体随便你改。

弄完之后,就可以登录jumpserver后台了,地址你的ip+你刚才修改的端口就可以了

默认的登录用户名和密码均为:admin,可以自己去修改,网上教程很多。

    版权声明:

     本网站的所有文字、图片资料,【未注明转载的】均由作者亲自整理创作,任何媒体、网站或个人未经本人同意和授权不得复制、转载、转贴或以其他方式复制发布/发表,请尊重我的劳动成果,侵权必究,谢谢。