docker-stack一鍵編排lnmp

環境要求

docker-stack一鍵編排lnmp

docker-stack一鍵編排lnmp

1, 配置nfs存儲卷

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

<code>/<code>

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

<code>[root@nfs ~] 
[root@nfs ~] 
/opt/dockervolume	*(rw,no_root_squash,sync)
[root@nfs ~]/<code>

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

<code> 
{

"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"

}

local

nginx_volume nginx_volume/<code>

2, 下載鏡像

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

<code>[root@nfs ~]/<code>

3, 準備是相關配置文件

<code>[root@nfs ~] 
[root@nfs ~]/<code>

準備nginx主配置文件

<code>[root@nfs dockerfile] 
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 /

var

/log/nginx/access.log on; on; main; keepalive_timeout

65

;

include

/etc/nginx/conf.d/<code>

準備nginx子配置文件

<code>[root@nfs dockerfile] 

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; } }/<code>

準備時區文件

<code>[root@nfs dockerfile]/<code>

準備php-fpm子配置文件

<code>

[root@nfs dockerfile]

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

/<code>

4, 準備鏡像

編寫Dockerfile

<code>[root@nfs dockerfile] 

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/<code>

構建鏡像

<code>

[root@nfs

dockerfile]#

docker

build

-f

dockerfile

-t

192.168

.122

.18

/library/nginx-php-fpm:v1

.

/<code>

上傳鏡像到harbor

<code>

[root@nfs

dockerfile]#

docker

login

192.168

.122

.18

[root@nfs

dockerfile]#

docker

push

192.168

.122

.18

/library/nginx-php-fpm:v1

/<code>

5, 編排docker stack

編寫YMAL文件

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

<code>

[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"

/<code>

一鍵發佈stack

<code>  

~]# docker stack deploy -c discuz2.yml discuz

Creating

network discuz_default

Creating

service discuz_db

Creating

service discuz_nginx-php

/<code>

6, 拷貝discuz代碼到nfs共享

在nfs服務器上操作

<code>[root@nfs dockerfile] 
[root@nfs dockerfile] 
-rf
cp: overwrite ‘/opt/dockervolume/index.php’? y/<code>

7, 通過瀏覽器安裝

docker-stack一鍵編排lnmp

docker-stack一鍵編排lnmp


<code>[root@nfs dockerfile]/<code>

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

docker-stack一鍵編排lnmp

docker-stack一鍵編排lnmp

docker-stack一鍵編排lnmp

docker-stack一鍵編排lnmp


分享到:


相關文章: