项目需求
所有wordpress类型的网站通过k8s配置,Docker构建部署,形成全自动化流水线。之后项目只需要在本地提交代码,就可以在几分钟以后自动更新线上,方便快捷。
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,目标是让部署容器化的应用简单并且高效,它提供了应用部署,规划,更新,维护的一条龙服务。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源,可以打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现虚拟化,它包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。
装备说明
安装Docker
直接下载符合本机版本的Docker软件
Docker官网安装地址:https://docs.docker.com/get-docker/
Docker添加阿里云镜像加速器
- 登陆阿里云容器镜像服务 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors复制加速器地址
- 在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏添加下面的代码。
示例"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
Docker常用命令
- docker pull xxx 下载xxx镜像(当在本地主机上使用一个不存在的镜像时 Docker 会自动下载这个镜像)
- docker ps 查看所有镜像
- docker run -it xxx 运行xxx镜像
- docker exec -it [containerName] /bin/sh 以交互模式执行容器脚本
- docker image ls 或者 docker images列出本地主机上的镜像
- docker image rm [imageName]删除镜像
- docker container ls 查看所有正在运行的容器
- docker container ls —all 查看所有容器(包括停止)
- docker search xxx 命令来搜索xxx镜像
- docker rmi -f xxx 强制删除 xxx 镜像
- exit 退出
- Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
构建Docker容器(测试)
新建项目
新建测试项目docker-test
在项目根目录下,新建文本文件Dockerfile,写入下面的内容FROM node:8.4COPY . /appWORKDIR /appRUN npm install --registry=https://registry.npm.taobao.orgEXPOSE 3000
语句解释如下
- FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
- COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
- WORKDIR /app:指定接下来的工作路径为/app。
- RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
- EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
创建image(镜像)文件
docker image build -t docker-test .
- -t参数:用来指定image文件的名字
- . 参数:一定不要忘记有个点,表示Dockerfile所在的路径
查看新生成的image文件
docker image ls
或者
docker images
生成container(容器)
docker container run -p 8000:3000 -it demo-test /bin/bash
语句解释如下
- -p参数:容器的 3000 端口映射到本机的 8000 端口
- -it参数:容器的 Shell 映射到当前的 Shell,然后在本机窗口输入的命令,就会传入容器
- /bin/bash:容器启动以后,内部第一个执行的命令
现在docker-test已经运行起来了,在浏览器打开http://127.0.0.1:8000
发布到自己的仓库
先登录一下DockerHub的账号
docker login
新建一个镜像
docker build -t [imagename]:1.0
设置镜像的标签
docker tag [imageID] [username]/[imagename]:1.0
语句解释如下
docker tag [镜像ID] [用户名称]/[镜像源名]:新的标签名
推送镜像到DockerHub
docker push [username]/[imagename]:1.0
本地部署wordpress
获取wordpress镜像
wordpress的版本看Dockerhub上的示例

获取wordpress镜像,执行docker pull wordpress:5.5
创建mysql容器
因为wordpress需要配置数据库,所以还要拉取mysql的镜像
docker pull mysql
创建mysql容器并运行,指定数据库密码是123456
docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 -d mysql
—name:指定容器的名称 -e:指定环境变量
创建wordpress容器
然后创建并运行新的wordpress容器(名称为wp-demo),连接数据库(mysql),
docker run --name wp-demo --link mysql_db:mysql -p 8080:80 -d wordpress:5.5
—link:用来链接容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据 -p:指定端口映射,格式为:主机(宿主)端口:容器端口 -d:后台运行容器,并返回容器ID
查看wp-demo内的主题文件
docker exec -it wp-demo /bin/sh

然后就可以在浏览器上输入 http://127.0.0.1:8080/开始安装wordpress
新增主题
方法一 平台直接添加新主题
选择按钮“Add New”,上传我们自己的主题
如果出现文件上传失败的提示:
The link you followed has expired.
说明wordpress限制了文件大小,用下面的方法查看文件限制的大小,如图所示
文件上传的解决办法
方法一 安装插件
- 安装插件 File Manager

- 修改配置文件

- 添加下面几行代码
示例如下php_value upload_max_filesize 64Mphp_value post_max_size 64Mphp_value max_execution_time 300php_value max_input_time 300

方法二 服务器修改文件
直接在服务器里更改 .htaccess文件的内容
现在就可以安心地上传我们自己的主题包了。
方法二 复制主题文件到容器中
- 新建文件夹wordpress-docker,把主题包放进去
示例
查看运行中的wordpress5.5版本的容器,获取它的CONTAINER ID
docker container ls
示例

查看主题包的位置
pwd
示例

查看容器位置
docker exec -it wp-demo /bin/shpwd
执行docker cp [文件名] [CONTAINER ID]:[容器名]
docker cp /Users/skywen_cp/Documents/demo/wordpress-docker/skywen-theme f4e4ea3c21c1:/var/www/html/wp-content/themes
查看wordpress内主题是否存在
docker exec -it wp-demo /bin/shcd wp-contents/themesls
示例

先看再看网站里面的主题,有两个相同的主题了
线上部署wordpress
注意:这不是演习,最好在本地测试成功了再在线上部署
再熟悉一下下面的命令
#构建镜像docker image build -t wp:1.0 .#docker面板开启镜像wp的一个容器,并运行docker exec -it [containerID] /bin/sh#查看主题文件下是否含有加入的主题包cd wp-content/themes
设置代码仓库
注意:代码仓库里多余的代码最好清掉,以防以为文件太大而构建失败


