容器编排Explorer
- 容器化部署MariaDB
- 容器化部署Redis
- 容器化部署PHP
- 容器化部署Nginx
- 编排部署compose服务
var code = “9861ce02-1202-405b-b419-4dddd337aaa7”
GitHub官网
KodExplorer 是一款网页文件管理器。它也是一个网页代码编辑器,可让你直接在网页浏览器中开发网站。也可以在 Linux、Windows 或 Mac 平台上在线或本地运行 KodExplorer。唯一的要求是必须有 PHP 5。
容器化部署MariaDB
编写Dockerfile文件构建mysql镜像,要求基于centos完成MariaDB数据库的安装与配置,并设置服务开机自启。编写Dockerfile构建镜像explorer-mysql:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成MariaDB数据库的安装,设置root用户的密码为root,并设置MariaDB数据库开机自启。
[root@k8s-master-node1 ~]# tar -xf Explorer.tar.gz
[root@k8s-master-node1 ~]# ls
anaconda-ks.cfg Explorer.tar.gz KodExplorer
[root@k8s-master-node1 ~]# cd KodExplorer/
[root@k8s-master-node1 KodExplorer]# ls
CentOS_7.9.2009.tar data mysql nginx php redis yum
[root@k8s-master-node1 KodExplorer]#
上传centos镜像
[root@k8s-master-node1 KodExplorer]# docker load -i CentOS_7.9.2009.tar
Loaded image: centos:centos7.9.2009
编写数据库初始化脚本
[root@k8s-master-node1 KodExplorer]# vi mysql_init.sh
[root@k8s-master-node1 KodExplorer]# cat mysql_init.sh
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root'; flush privileges;"
[root@k8s-master-node1 KodExplorer]#
编写本地yum源仓库
[root@k8s-master-node1 KodExplorer]# vi local.repo
[root@k8s-master-node1 KodExplorer]# cat local.repo
[yum]
name=yum
baseurl=file:///root/yum
gpgcheck=0
enabled=1
[root@k8s-master-node1 KodExplorer]#
编写dockerfile文件
[root@k8s-master-node1 KodExplorer]# vi Dockerfile-mariadb
[root@k8s-master-node1 KodExplorer]# cat Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rfv /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum -y install mariadb-server
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
构建镜像
[root@k8s-master-node1 KodExplorer]# docker build -t explorer-mysql:v1.0 -f Dockerfile-mariadb .
容器化部署Redis
编写Dockerfile文件构建redis镜像,要求基于centos完成Redis服务的安装和配置,并设置服务开机自启。编写Dockerfile构建镜像explorer-redis:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Redis服务的安装,修改其配置文件关闭保护模式,并设置Redis服务开机自启。
[root@k8s-master-node1 KodExplorer]# vi Dockerfile-redis
[root@k8s-master-node1 KodExplorer]# cat Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
[root@k8s-master-node1 KodExplorer]#
构建镜像
[root@k8s-master-node1 KodExplorer]# docker build -t explorer-redis:v1.0 -f Dockerfile-redis .
容器化部署PHP
编写Dockerfile文件构建explorer镜像,要求基于centos完成PHP和HTTP环境的安装和配置,并设置服务开机自启。编写Dockerfile构建镜像explorer-server:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成HTTP和PHP服务的安装,然后将kodexplorer4.37.zip解压到/var/www/html目录下,修改HTTP服务的监听地址为本机,并设置HTTP服务开机自启。
编写dockerfile文件
[root@k8s-master-node1 KodExplorer]# vi Dockerfile-php
[root@k8s-master-node1 KodExplorer]# cat Dockerfile-php
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install httpd php php-cli unzip php-gd php-mbstring -y
WORKDIR /var/www/html
COPY php/kodexplorer4.37.zip .
RUN unzip kodexplorer4.37.zip
RUN chmod -R 777 /var/www/html
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /etc/httpd/conf/httpd.conf
EXPOSE 80
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
构建镜像
[root@k8s-master-node1 KodExplorer]# docker build -t explorer-server:v1.0 -f Dockerfile-php .
容器化部署Nginx
编写Dockerfile文件构建nginx镜像,要求基于centos完成Nginx服务的安装和配置,并设置服务开机自启。编写Dockerfile构建镜像explorer-nginx:v1.0,要求使用centos7.9.2009镜像作为基础镜像,完成Nginx服务的安装,并设置Nginx服务开机自启。
[root@k8s-master-node1 KodExplorer]# vi Dockerfile-nginx
[root@k8s-master-node1 KodExplorer]# cat Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install nginx
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
[root@k8s-master-node1 KodExplorer]#
构建镜像
[root@k8s-master-node1 KodExplorer]# docker build -t explorer-nginx:v1.0 -f Dockerfile-nginx .
编排部署compose服务
编写docker-compose.yaml文件,要求使用镜像mysql、redis、nginx和explorer完成Explorer管理系统的编排部署。编写docker-compose.yaml完成Explorer资源管理系统的部署,要求定义mysql、redis、nginx和explore共四个Service,分别使用镜像explorer-redis:v1.0、explorer-mysql:v1.0、explorer-nginx:v1.0、explorer-server:v1.0,并将explorer的80端口映射到宿主机的8090端口。
[root@k8s-master-node1 KodExplorer]# vi docker-compose.yaml
[root@k8s-master-node1 KodExplorer]# cat docker-compose.yaml
version: '3.2'
services:nginx:container_name: nginximage: explorer-nginx:v1.0volumes:- ./nginx/logs:/var/log/nginxports:- "443:443"restart: alwaysdepends_on:- php-fpmtty: truemysql:container_name: mysqlimage: explorer-mysql:v1.0volumes:- ./data/mysql:/var/lib/mysql- ./mysql/logs:/var/lib/mysql-logsports:- "3306:3306"restart: alwaysredis:container_name: redisimage: explorer-redis:v1.0ports:- "6379:6379"volumes:- ./data/redis:/data- ./redis/redis.conf:/usr/local/etc/redis/redis.confrestart: alwaysphp-fpm:container_name: php-fpmimage: explorer-server:v1.0ports:- "8090:80"links:- mysqlrestart: alwaysdepends_on:- mysql
启动服务
[root@k8s-master-node1 KodExplorer]# docker-compose up -d
[+] Running 4/4⠿ Container nginx Started 4.1s⠿ Container redis Started 1.1s⠿ Container mysql Started 1.1s⠿ Container php-fpm Started 1.0s
[root@k8s-master-node1 KodExplorer]#
注;如果出现以下情况,将该容器停止,再删除即可
[root@k8s-master-node1 KodExplorer]# docker-compose up -d
[+] Running 0/0⠋ Container nginx Creating 0.0s
Error response from daemon: Conflict. The container name "/nginx" is already in use by container "a77708ef82cdfac8291ca640bbec0da3cd58ff5fa82697d3e88dba854baf5998". You have to remove (or rename) that container to be able to reuse that name.
[root@k8s-master-node1 KodExplorer]# docker stop a77708ef82cdfac8291
a77708ef82cdfac8291
[root@k8s-master-node1 KodExplorer]# docker-compose up -d
[+] Running 0/0⠋ Container nginx Creating 0.0s
Error response from daemon: Conflict. The container name "/nginx" is already in use by container "a77708ef82cdfac8291ca640bbec0da3cd58ff5fa82697d3e88dba854baf5998". You have to remove (or rename) that container to be able to reuse that name.
[root@k8s-master-node1 KodExplorer]# docker rm -f a77708ef82cdfac8291
a77708ef82cdfac8291
查看服务
[root@k8s-master-node1 KodExplorer]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
mysql "mysqld_safe --user=…" mysql running 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
nginx "nginx -g 'daemon of…" nginx running 0.0.0.0:443->443/tcp, :::443->443/tcp
php-fpm "/usr/sbin/httpd -D …" php-fpm running 0.0.0.0:8090->80/tcp, :::8090->80/tcp
redis "redis-server /usr/l…" redis running 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
[root@k8s-master-node1 KodExplorer]#
在浏览器上通过http://IP:8090访问KodExplorer