全国咨询/投诉热线:400-618-9090

首页技术文章正文

Docker stack 一键编排Inmp【linux云计算+运维开发】

更新时间:2020-04-29 来源:黑马程序员 浏览量:

环境要求

1588147265481_docker01.jpg


1588147275731_docker02.jpg


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 create   --driver local --opt type=nfs --opt o=addr=192.168.122.1,rw --opt device=:/opt/dockervolume

nginx_volume

# docker volume ls |grep nginx_volume

local               nginx_volume

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

}

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 daniel@itcast.cn

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, 通过浏览器安装

1588147288309_docker03.jpg

1588147298560_docker04.jpg


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

上图少了-R参数,请加上

1588147306929_docker05.jpg

1588147315825_docker06.jpg

1588147324086_docker07.jpg

1588147333289_docker08.jpg


猜你喜欢:

如何安装配置Supervisor?


javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名