docker(12):dockerfile构建kodexplorer(可道云)
KodExplorer是一款快捷高效的私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品。采用windows风格界面、操作习惯,无需适应即可快速上手,支持几百种常用文件格式的在线预览,可扩展易定制。GPL v3开源协议。
1 手动安装
1.1 环境
项目:可道云网盘kodexplorer
需要的环境:httpd+php或者nginx+php
php所需模块:php5.5以上
基础镜像:centos:7.6
项目下载地址:
http://static.kodcloud.com/update/download/kodexplorer4.37.zip
项目官网:https://kodcloud.com/download/
1.2 安装服务软件
基础环境
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
sed -i 's#$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's#$basearch#x86_64#g' /etc/yum.repos.d/CentOS-Base.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install nginx net-tools php-cli php-fpm unzip php-gd php-mbstring -y
调试 PHP info
PHP换成Nginx用户
[root@0fd3f853ea4b /]# grep -n nginx /etc/php-fpm.d/www.conf
39:user = nginx
41:group = nginx
[root@0fd3f853ea4b /]#
启动php-fpm
[root@0fd3f853ea4b /]# systemctl start php-fpm
[root@0fd3f853ea4b /]# ps -ef | grep php
root 3690 1 1 02:30 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
nginx 3691 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3692 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3693 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3694 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3695 3690 0 02:30 ? 00:00:00 php-fpm: pool www
root 3697 3352 0 02:30 pts/0 00:00:00 grep --color=auto php
[root@0fd3f853ea4b /]#
配置Nginx支持PHP
[root@0fd3f853ea4b html]# cat /etc/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
写一个PHP测试页
[root@0fd3f853ea4b html]# pwd
/usr/share/nginx/html
[root@0fd3f853ea4b html]# cat index.php
<?php phpinfo(); ?>
[root@0fd3f853ea4b html]#
启动nginx
[root@0fd3f853ea4b nginx]# systemctl start nginx
[root@0fd3f853ea4b nginx]# ps -ef | grep nginx
nginx 3691 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3692 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3693 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3694 3690 0 02:30 ? 00:00:00 php-fpm: pool www
nginx 3695 3690 0 02:30 ? 00:00:00 php-fpm: pool www
root 3712 1 0 02:35 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 3713 3712 0 02:35 ? 00:00:00 nginx: worker process
root 3717 3352 0 02:36 pts/0 00:00:00 grep --color=auto nginx
[root@0fd3f853ea4b nginx]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3690/php-fpm: maste
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3712/nginx: master
[root@0fd3f853ea4b nginx]#
测试
1.3 部署可道云
cd /usr/share/nginx/html
mkdir bak
mv 404.html 50x.html nginx-logo.png index.* poweredby.png bak/
curl -o kodexplorer.zip http://static.kodcloud.com/update/download/kodexplorer4.37.zip
unzip kodexplorer.zip
su -c 'setenforce 0'
chown -R nginx:nginx /usr/share/nginx/html/
1.4 提交镜像
[root@docker-136 ~]# docker commit kod-1 kod:v1
sha256:681c97c0548e69f89f83e1437a798430d461e8ca9669b1011b6f0ced5c73cc9e
[root@docker-136 ~]# docker images|grep kod
kod v1 681c97c0548e 42 seconds ago 550MB
[root@docker-136 ~]#
1.5 测试镜像
[root@docker-136 ~]# docker run --privileged=true -d -p 1080:80 --name kod-2 kod:v1 /usr/sbin/init
df9af7f7cb15815abd8876d06fcad1529f72ec18ef822a5e50756cc29dbfe74f
[root@docker-136 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df9af7f7cb15 kod:v1 "/usr/sbin/init" 43 seconds ago Up 36 seconds 22/tcp, 0.0.0.0:1080->80/tcp kod-2
0fd3f853ea4b centos "/usr/sbin/init" 37 minutes ago Up 37 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:1022->22/tcp kod-1
[root@docker-136 ~]# docker exec -it kod-2 /bin/bash
#需要手动启动Nginx和php-fpm
[root@df9af7f7cb15 /]# systemctl start nginx
[root@df9af7f7cb15 /]# systemctl start php-fpm
[root@df9af7f7cb15 /]#
2 dockerfile自动构建
2.1 dockerfile和文件
[root@docker-136 kod]# pwd
/opt/dockerfile/kod
[root@docker-136 kod]# ls
dockerfile init.sh nginx.conf
[root@docker-136 kod]#
[root@docker-136 kod]# cat dockerfile
FROM centos
ENV container docker
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
RUN sed -i 's#$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
RUN sed -i 's#$basearch#x86_64#g' /etc/yum.repos.d/CentOS-Base.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install curl nginx net-tools php-cli php-fpm unzip php-gd php-mbstring -y
RUN sed -i "s#apache#nginx#g" /etc/php-fpm.d/www.conf
RUN rm -f /etc/nginx/nginx.conf
ADD nginx.conf /etc/nginx/nginx.conf
RUN cd /usr/share/nginx/html && \curl -o kodexplorer.zip http://static.kodcloud.com/update/download/kodexplorer4.37.zip && \unzip kodexplorer.zip
RUN chown -R nginx:nginx /usr/share/nginx/html/
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]
[root@docker-136 kod]# cat init.sh
#!/bin/bash
php-fpm -D
nginx -g 'daemon off;'
[root@docker-136 kod]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
2.2 提交镜像
docker build -t kod:v8 .
2.3 运行镜像
docker run --privileged=true -d -p 80:80 --name kod-dockerfile-1 kod:v8
2.4 测试镜像
[root@docker-136 kod]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e531705e9b08 kod:v8 "/bin/bash /init.sh" 22 minutes ago Up 22 minutes 0.0.0.0:80->80/tcp kod-dockerfile-1
[root@docker-136 kod]#
[root@docker-136 kod]# docker exec -it kod-dockerfile-1 /bin/bash
[root@e531705e9b08 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:06 ? 00:00:00 /bin/bash /init.sh
root 7 1 0 08:06 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
nginx 8 7 0 08:06 ? 00:00:00 php-fpm: pool www
nginx 9 7 0 08:06 ? 00:00:00 php-fpm: pool www
nginx 10 7 0 08:06 ? 00:00:01 php-fpm: pool www
nginx 11 7 0 08:06 ? 00:00:00 php-fpm: pool www
nginx 12 7 0 08:06 ? 00:00:00 php-fpm: pool www
root 13 1 0 08:06 ? 00:00:00 nginx: master process nginx -g daemon off;
nginx 14 13 0 08:06 ? 00:00:00 nginx: worker process
nginx 30 7 0 08:07 ? 00:00:00 php-fpm: pool www
root 31 0 1 08:10 pts/0 00:00:00 /bin/bash
root 44 31 0 08:10 pts/0 00:00:00 ps -ef
[root@e531705e9b08 /]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13/nginx: master pr
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 7/php-fpm: master p
[root@e531705e9b08 /]#