本文章适合有一定docker基础的朋友观看,如果觉得博主创作的好,麻烦点个赞和关注下,更多内容关注动态。最好大家版本同一,避免不必要的麻烦(镜像版本在compose文件里面有,下载即可)

首先我们需要配置docker-compse文件,配置文件的路径自选(我自己的放在/home目录下的)。并且由于官方的文件地址打不开,所以我会放到我的gitee上,链接统一的放到最后面

docker 部署ctfd docker 部署minio 集群_docker

version: '3.7'
#minio的相关镜像以及配置(注意我这里的minio没有进行文件挂载,有需求的小伙伴可以自行挂载或者留言问我)
x-minio-common: &minio-common
  image: minio/minio
  command: server --console-address ":9001" http://minio{1...4}/data{1...2}
  #暴露的端口
  expose:
    - "9000"
    - "9001"
  #自定义账号和密码(密码注意不能低于8位)
  environment:
    MINIO_ROOT_USER: admin
    MINIO_ROOT_PASSWORD: 12345678
  
  #启动方式,我这里是永久启动
  restart: always

  healthcheck:
  #测试的命令,可以在通过输入curl 。。。这个命令在linux上访问
    test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
    interval: 30s
    timeout: 20s
    retries: 3

# 创建4个docker容器运行minio服务实例
# 用nginx进行反向代理,负载均衡,你可以通过9000端口运行
services:
  minio1:
    <<: *minio-common
    hostname: minio1


  minio2:
    <<: *minio-common
    hostname: minio2


  minio3:
    <<: *minio-common
    hostname: minio3


  minio4:
    <<: *minio-common
    hostname: minio4
#nginx的镜像
  nginx:
    image: nginx:1.19.2-alpine
    #挂载文件的路径,我的与docker-compose一样都是放在/home路径下的;注意不同版本的nginx有可能容器内部路径不同
    volumes:
    #./指当前目录下
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./log:/var/log/nginx
      - ./default.conf:/etc/nginx/conf.d/default.conf
      - ./html:/usr/share/nginx/html
    #端口映射配置
    ports:
      - "80:80"
      - "9001:9001"
    #依赖服务
    depends_on:
      - minio1
      - minio2
      - minio3
      - minio4
    #也是永久启动
    restart: always
然后我们需要在/home路径下配置nginx.conf文件(记得要在windows下配置好dns解析地址) 192.168.232.133是我的虚拟机的ip地址

docker 部署ctfd docker 部署minio 集群_nginx_02

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    client_max_body_size    1000m;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
#负载均衡配置(这两个必须配,访问的是minio_console所对应的url)
upstream minio_http {
    server minio1:9000;
    server minio2:9000;
    server minio3:9000;
    server minio4:9000;
}
upstream minio_console {
    server minio1:9001;
    server minio2:9001;
    server minio3:9001;
    server minio4:9001;
}

	
    server {
     listen 80;#这里监听的端口对应的代理的是minio_console,那么访问agriculture.com时就不需要带上80端口
     #服务名称自定义
     server_name agriculture.com;
        location /{
           proxy_set_header Host $http_host;
           proxy_pass http://minio_console;
        }
    }
    server {
     listen 9001;
     server_name agriculture.com;
        location /{
           proxy_set_header Host $http_host;
           proxy_pass http://minio_http;
        }
    }
}
通过上述的配置过后,然后在当前路径我这里是/home下进行如下操作

docker 部署ctfd docker 部署minio 集群_docker_03

如果全部显示done,就代表成功了

docker 部署ctfd docker 部署minio 集群_自定义_04


然后再进行docker-compose up操作


docker 部署ctfd docker 部署minio 集群_自定义_05

如果显示如下图片样式就代表成功了(由于太多我只截取了前面部分的,一定要全部done才可以)

docker 部署ctfd docker 部署minio 集群_linux_06

然后就可以通过docker ps查看是否有容器了(每个人的容器id不相同)

docker 部署ctfd docker 部署minio 集群_linux_07

最后我们访问http://agriculture.com/时它会自动跳到http://agriculture.com/login去,出现如下界面,然后输入自定义的账号和密码就成功了

docker 部署ctfd docker 部署minio 集群_docker 部署ctfd_08