docker-stack一鍵編排lnmp

環境要求

 

 

 

1, 配置nfs存儲卷

1,在docker swarm集羣中所有節點都確認安裝nfs客戶端軟件

# yum install nfs-utils rpcbind -y

2, 在192.168.122.1 上搭建nfs,共享目錄給docker swarm集羣中所有節點掛載

[root@nfs ~]# mkdir /opt/dockervolume
[root@nfs ~]# vim /etc/exports
/opt/dockervolume	*(rw,no_root_squash,sync)
[root@nfs ~]# systemctl restart rpcbind nfs-server [root@nfs ~]# systemctl enble rpcbind nfs-server

3, 在docker swarm集羣中所有節點創建存儲卷,並驗證

# docker volume inspect nginx_volume [
{
"CreatedAt": "2019-06-12T13:24:09+08:00",
"Driver": "local",
"Labels": {}, "Mountpoint":
"/var/lib/docker/volumes/nginx_volume/_data", "Name": "nginx_volume",
"Options": {
"device": ":/opt/dockervolume", "o": "addr=192.168.122.1,rw",
注意這裏的掛載參數要有
"type": "nfs"
},
"Scope": "local"
}
# docker volume ls |grep nginx_volume
local	nginx_volume
# docker volume create	--driver local --opt type=nfs --opt o=addr=192.168.122.1,rw --opt device=:/opt/dockervolume
nginx_volume

2, 下載鏡像

在任意能上外網的機器上操作

[root@nfs ~]# docker pull richarvey/nginx-php-fpm

3, 準備是相關配置文件

[root@nfs ~]# mkdir /root/discuz/dockerfile -p 
[root@nfs ~]# cd /root/discuz/dockerfile

準備nginx主配置文件

[root@nfs dockerfile]# vim nginx.conf user	nginx;
worker_processes	auto;
error_log	/var/log/nginx/error.log warn;
pid	/var/run/nginx.pid;
events {
use epoll; worker_connections	65535;
}
http {
include	/etc/nginx/mime.types; default_type	application/octet-stream;
log_format	main	'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent
"$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log
sendfile #tcp_nopush
/var/log/nginx/access.log on;
on;
main;


keepalive_timeout	65; #gzip	on;
include /etc/nginx/conf.d/*.conf;
}

準備nginx子配置文件

[root@nfs dockerfile]# vim web.conf server {
listen 80; server_name _;
index index.php index.html; root /var/www/html;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name; include fastcgi_params;
}
}

準備時區文件

[root@nfs dockerfile]# cp /etc/localtime .

準備php-fpm子配置文件

[root@nfs dockerfile]# vim php-fpm-www.conf [www]
user = nginx group = nginx
listen = 127.0.0.1:9000
pm = dynamic pm.max_children = 64
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

4, 準備鏡像

編寫Dockerfile

[root@nfs dockerfile]# vim dockerfile FROM richarvey/nginx-php-fpm

MAINTAINER [email protected]

RUN echo 'Asia/Shanghai' > /etc/timezone && rm -f
/etc/nginx/nginx.conf && rm -f /usr/local/etc/php- fpm.d/www.conf

COPY localtime /etc/localtime
COPY nginx.conf /etc/nginx/nginx.conf COPY web.conf /etc/nginx/conf.d/web.conf
COPY php-fpm-www.conf /usr/local/etc/php-fpm.d/www.conf

CMD /usr/sbin/nginx -c /etc/nginx/nginx.conf &&
/usr/local/sbin/php-fpm -c /usr/local/etc/php-fpm.conf

構建鏡像

[root@nfs dockerfile]# docker build -f dockerfile -t 192.168.122.18/library/nginx-php-fpm:v1 .

上傳鏡像到harbor

[root@nfs dockerfile]# docker login 192.168.122.18
[root@nfs dockerfile]# docker push 192.168.122.18/library/nginx-php-fpm:v1

5, 編排docker stack

編寫YMAL文件

在docker swarm集羣中的管理節點進行操作

[root@manager ~]# cat discuz.yml version: '3'
services: db:
image: 192.168.122.18/library/mysql:5.7 environment:
MYSQL_ROOT_PASSWORD: 123
MYSQL_DATABASE: discuz MYSQL_USER: discuz_user MYSQL_PASSWORD: 123
deploy:
replicas: 1
nginx-php:
image: 192.168.122.18/library/nginx-php-fpm:v1 depends_on:
- db ports:
- "8011:80"
volumes:
- "nginx_volume:/var/www/html" deploy:
replicas: 1
volumes:
nginx_volume: driver: local driver_opts:
type: "nfs"
o: "addr=192.168.122.1,rw"
device: ":/opt/dockervolume"

一鍵發佈stack

[root@manager ~]# docker stack deploy -c discuz2.yml discuz 
Creating network discuz_default
Creating service discuz_db 
Creating service discuz_nginx-php

6, 拷貝discuz代碼到nfs共享

在nfs服務器上操作

[root@nfs dockerfile]# git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git
[root@nfs dockerfile]# cp DiscuzX/upload/* /opt/dockervolume/
-rf
cp: overwrite ‘/opt/dockervolume/index.php’? y

7, 通過瀏覽器安裝

 

[root@nfs dockerfile]# chmod o+w -R /opt/dockervolume/

上圖少了-R參數,請加上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章