docker制作Discuz论坛网站镜像

 

前期准备


 🥝介绍:在docker01上面制作论坛镜像并验证,直接挂载虚拟主机目录直接访问网站,在docker02上面部署mariadb数据库供论坛存储数据

官网地址https://hub.docker.com/

Discuz压缩包https://pan.baidu.com/s/1SGHOFASpMojIc7HzIpZJfQ

主机名内存ip软件
docker01 2G 10.0.0.11 docker
docker02 2G 10.0.0.12 mariadb

1. docker01安装

  清华源:https://mirrors.tuna.tsinghua.edu.cn/

  🥥yum源优化

#centos 7镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#centos 6镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

  🍇安装方式一:在线安装

#安装docker-ce
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
#将国外地址改成国内地址
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y

systemctl enable docker
systemctl start docker

#验证
[root@docker01 yum.repos.d]# docker version 
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:25:41 2019
 OS/Arch:           linux/amd64
 Experimental:      false

  🍈方式二:离线安装

  链接:https://pan.baidu.com/s/1RFd5GSzFDjtjMM6uhC3l8Q
  提取码:5yes

tar xf docker_rpm.tar.gz
yum localinstall docker_rpm/*.rpm -y
#验证
docker version 

2.创建Discuz论坛目录用于挂载

  Discuz包https://pan.baidu.com/s/1HrYhjhmUrcrp_I3HP5LYpg

  提取码:sahr

[root@docker01 /]# mkdir /bbs
[root@docker01 bbs]# mv readme/* /bbs/ && mv upload/* /bbs/ && mv  utility/* /bbs/ 
[root@docker01 bbs]# rm -rf Discuz_X3.3_SC_GBK.zip 

docker虚拟机创建


1. 创建docker

   镜像包地址:https://pan.baidu.com/s/1yUJr7RKY1EtqyIN_Gjuf-Q

#将镜像上传到本地,查看镜像
[root@docker01 ~]# docker ps

#创建镜像安装软件
[root@docker01 ~]# docker run -d -it -p 80:80 -v /bbs/:/usr/share/nginx/html centos:6.9 
[root@docker01 ~]# docker ps -a    --查看id号
[root@docker01 ~]# docker exec -it 052a6c61b293  /bin/bash  -

#更新yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

报错解决:

#问题:虚拟机无法连接外网
#解决:重启docker

systemctl restart docker 
[root@docker01 ~]# docker run -d -it -p 80:80 -v /bbs/:/usr/share/nginx/html centos:6.9 

docker部署论坛


 1. docker虚拟机安装 nginx、php

🍅注:Discuz 论坛必须使用 80 端口 否则报错 。

[root@cb5ec42c3dec /]# yum install nginx php-fpm  php-mbstring php-mysql  -y 
[root@cb5ec42c3dec /]# service nginx start 

# mbstring:扩展 是针对php部分函数(比如 mb_strlen() 函数)该函数就需要改扩展
# php-fpm是个中间件,在需要php解释器来处理.php文本时会用到php-fpm
# php-mysql 连接到一个 MySQL 数据库

2. 确认程序用户信息

  🍆备注:确认PHP程序用户信息和nginx程序保持一致

# 检查nginx程序所使用的用户信息
[root@oldboyedu ~]# ps -ef|grep nginx
nginx      5384   5380  0 04:16 ?        00:00:00 nginx: worker process
# 修改php程序所使用的用户信息
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx

3. 启动软件程序服务

service php-fpm  start    # 启动PHP服务程序
chkconfig --add php-fpm            --开机自启
ps -ef|grep php                    # 检查启动进程信息
# 检查启动端口信息
netstat -lntup|grep php

4. 网站结构服务配置过程

  🍏nginx + php 建立关系:

[root@cb5ec42c3dec blog]# cat  /etc/nginx/conf.d/default.conf 
#
# The default server
#

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    location / {
    root         /usr/share/nginx/html;
    index index.php index.html;
    }
    location ~ \.php$ {
        root           /blog;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

5. 编写测试php文件

# cat /blog/test_index.php 
      <?php
      phpinfo();
      ?>

6. 谷歌输入地址验证

http://10.0.0.11/test_index.php  #显示php安装完成

测试网页:

7. 授权站点目录

[root@cb5ec42c3dec ~]# nginx -t
[root@cb5ec42c3dec /]# chown -R nginx.nginx /usr/share/nginx/html/
[root@cb5ec42c3dec blog]# service nginx restart   

8. 创建启动脚本

🍍每次使用镜像时 执行 /bin/bash /init.sh 否则无法进入系统因为docker镜像不走开机自启

[root@cb5ec42c3dec /]# vi /init.sh
#!/bin/bash

service php-fpm start
nginx -g 'daemon off;'

🍌注:只要能夯住用啥都行 tail -f /etc/hosts

报错处理

在前期如果没有安装 php-mysql 模块会出现没有函数的错误,下面时模拟报错

php-mysql:连接数据库使用

yum install php-mysql -y 
service  php-fpm restart

创建数据库


1. 下载安装软件程序

yum install mariadb-server mariadb -y

2. 启动软件服务程序

systemctl start mariadb.service    # 启动数据库程序服务进程
systemctl enable mariadb.service 

3. 数据库创建密码登录

mysqladmin -uroot password "123456"
mysql -uroot -p123456

4. 设置连接数据库,进入数据库创建

#创建以wordpress命名的数据库
create database discuz;    
#创建并授权用户信息
grant all on discuz.* to 'discuz'@'10.0.0.%' identified by '123456';

exit
#关闭数据库反向解析操作(跳过反向解析过程)    
# delete from mysql.user where user='discuz' and host='discuz';   --删除表信息
#删除时操作
# flush privileges;

导出镜像


1. 把制作好服务的容器,提交为镜像

docker commit  052a6c61b293   bbs:v1    -- id唯一提前查好

🍓注:模拟端口被占用的错误

32405be2ec68a8e35ef60f753946a2c4af431be53e97885068b9004f39b239af
docker: Error response from daemon: driver failed programming external connectivity on endpoint trusting_hypatia (145e1d6c48bcc7e07f996476969d6c7bdf84657319429ae0e3ef2f92549ff3c9): Bind for 0.0.0.0:80 failed: port is already allocated.  #翻译:绑定0.0.0.0:80失败:端口已经分配。

2. 测试镜像功能

#直接进入虚拟机
docker run -it   -p 83:80 -v /bbs/:/usr/share/nginx/html bbs:v1 

3. 测试网页,连接数据库直接可以使用

posted @ 2020-01-15 21:23  kerwin-  阅读(1530)  评论(0编辑  收藏  举报