Docker部署常用镜像

1. Mysql-持久化数据

  1. 拉取mysql:docker pull mysql:8.0.33
  2. 创建临时容器:docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.33
  3. 复制配置文件和日志文件到本地
    mkdir -p /data/mysql/data
    mkdir -p /data/mysql/conf
    mkdir -p /data/mysql/log
    
    docker cp mysql:/etc/mysql/conf.d /data/mysql/conf
    docker cp mysql:/var/log /data/mysql/log
    
  4. 删除临时容器docker stop mysql    docker rm mysql
  5. 创建容器
    docker run -d \
    	--name mysql \
    	--restart=always \
    	-p 3306:3306 \
    	-v /data/mysql/data:/var/lib/mysql \
    	-v /data/mysql/conf:/etc/mysql/conf.d \
    	-v /data/mysql/log:/var/log \
    	-e MYSQL_ROOT_PASSWORD=123456 \
    	mysql:8.0.33
    
  6. 创建数据库nacos,create database nacos;Nacos下的conf文件下的mysql-schema.sql导入nacos数据库
  7. 创建数据库xxl_job,create database xxl_job;tables_xxl-job.sql导入xxl-job数据库
  8. 对外开放3306端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --reload
    
  9. 所需依赖
    <!-- Mysql -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.33</version>
    </dependency>
    
  10. 配置文件
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.47.129:3306/database
        username: root
        password: 123456
    

2. Nacos-配置管理中心

  1. 拉取nacos:docker pull nacos/nacos-server:v2.2.3
  2. 创建临时容器:docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:v2.2.3
  3. 复制配置文件到本地
    mkdir -p /data/nacos/data
    mkdir -p /data/nacos/conf
    mkdir -p /data/nacos/logs
    
    docker cp nacos:/home/nacos/data /data/nacos
    docker cp nacos:/home/nacos/conf /data/nacos
    docker cp nacos:/home/nacos/logs /data/nacos
    
  4. 删除临时容器:docker stop nacos    docker rm nacos
  5. 创建容器并关联数据库,访问http://192.168.47.129:8848/nacos
    docker run -d \
    	--name nacos \
    	--restart=always \
    	-p 8848:8848 \
    	-v /data/nacos/conf:/home/nacos/conf \
    	-v /data/nacos/logs:/home/nacos/logs \
    	-v /data/nacos/data:/home/nacos/data \
    	-e MODE=standalone \
    	-e SPRING_DATASOURCE_PLATFORM=mysql \
    	-e MYSQL_SERVICE_HOST=192.168.47.129 \
    	-e MYSQL_SERVICE_PORT=3306 \
    	-e MYSQL_SERVICE_USER=root \
    	-e MYSQL_SERVICE_PASSWORD=123456 \
    	-e MYSQL_SERVICE_DB_NAME=nacos \
    	-e TIME_ZONE='Asia/Shanghai' \
    	nacos/nacos-server:v2.2.3
    
  6. 或者修改/data/nacos/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
    spring.datasource.platform=mysql
    
    db.num=1
    db.url.0=jdbc:mysql://192.168.47.129:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=123456
    
  7. 对外开放8848端口
    firewall-cmd --zone=public --add-port=8848/tcp --permanent
    firewall-cmd --reload
    
  8. 所需依赖
    <!-- Nacos注册中心 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- Nacos配置中心 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!-- Bootstrap(使用bootstrap.yml配置文件时) -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    <!-- LoadBalancer(Gateway用到负载均衡时) -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    
  9. 配置文件
    spring:
      application:
        name: service-name # 服务名称
      cloud:
        nacos:
          server-addr: 192.168.47.129:8848 # nacos地址
          discovery:  # nacos注册中心
            namespace: ${spring.profiles.active} 
            group: group-name
          config: # nacos配置中心
            namespace: ${spring.profiles.active} # 主配置,data-id为service-name-${spring.profiles.active}.yaml
            group: group-name
            file-extension: yaml
            refresh-enabled: true
            extension-configs:  # 扩展配置
              - data-id: extension-service-${spring.profiles.active}.yaml # 三部分组成:服务名-开发环境.后缀
                group: group-name
                refresh: true
            shared-configs: # 共享配置
              - data-id: swagger-${spring.profiles.active}.yaml
                group: group-common
                refresh: true
      profiles: # 开发环境,默认为dev
        active: dev
    
    bootstrap.yml(父上下文对象) > nacos(主配置 > 扩展配置 > 共享配置)> 本地配置(命令行参数 > application.properties > application.yml > application.yaml)
    可以在nacos中设置本地配置优先:
    spring:
     cloud:
      config:
        override-none: true # 配置本地文件配置优先
    

3. Minio-分布式文件系统

  1. 拉取minio:docker pull bitnami/minio:latest
  2. 创建挂载目录,并更改权限
    mkdir -p /data/minio/data
    chmod 777 /data/minio/data
    
  3. 运行并挂载minio:9000端口用于接口调用,9001用于浏览器访问
    docker run -d \
    	--name minio \
    	--restart=always \
    	-p 9000:9000 \
    	-p 9001:9001 \
    	-v /data/minio/data:/data \
    	-v /etc/localtime:/etc/localtime \
    	-e MINIO_ROOT_USER="minio_root" \
    	-e MINIO_ROOT_PASSWORD="minio_123456" \
    	bitnami/minio:latest
    
  4. 对外开放9000、9001端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --zone=public --add-port=9001/tcp --permanent
    firewall-cmd --reload
    
  5. 所需依赖
    <!-- minio -->
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.5.3</version>
    </dependency>
    
  6. 配置文件
    minio:
      endpoint: http://192.168.47.129:9000
      accessKey: minio_root
      secretKey: minio_123456
      bucket:
        files: mediafiles # 桶1,可通过@Value("${minio.bucket.files}")获取
        videofiles: video
    
  7. SDK官网示例

4. XXL-JOB 分布式任务调度

  1. 拉取xxl-job:docker pull xuxueli/xxl-job-admin:2.4.0
  2. 运行容器,默认用户名和密码:admin/123456
    docker run -d \
    	--name xxl-job-admin \
    	--restart=always \
    	-p 8080:8080 \
    	-e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.47.129:3306/xxl_job \
    	--spring.datasource.username=root \
    	--spring.datasource.password=123456 \
    	--xxl.job.accessToken=default_token" \
    	xuxueli/xxl-job-admin:2.4.0
    
  3. 对外开放8088端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --reload
    
  4. 所需依赖
    <!-- xxl-job -->
    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.4.0</version>
    </dependency>
    
  5. 配置文件
    xxl:
      job:
        admin: 
          addresses: http://192.168.47.129:8080/xxl-job-admin
        executor:
          appname: executor-service # 执行器应用名
          address: 
          ip: 
          port: 9999 # 执行器端口号
          logpath: /data/applogs/xxl-job/jobhandler
          logretentiondays: 30
        accessToken: default_token
    
  6. xxl-job官网

5. Elasticsearch-分布式搜索引擎

  1. 拉取Elasticsearch与Kibana:docker pull elasticsearch:8.7.0docker pull kibana:8.7.0
  2. 运行容器,–privileged(授予root权限)、-e(内存、单点模式、不设置密码)、9200端口是对外(http),9300端口是对内(集群,tcp),-v(docker数据卷挂载;之前的都是目录挂载,宿主机目录或文件会覆盖容器目录或文件)
    docker run -d \
    	--name elasticsearch \
    	--restart=always \
    	-p 9200:9200 \
        -p 9300:9300 \
        --privileged=true \
        -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
        -e "discovery.type=single-node" \
        -e "xpack.security.enabled=false" \
    	-e "xpack.security.transport.ssl.enabled=false" \
        -v es-data:/usr/share/elasticsearch/data \
    	-v es-config:/usr/share/elasticsearch/config \
    	-v es-plugins:/usr/share/elasticsearch/plugins \
    	elasticsearch:8.7.0
    
    docker run -d \
    	--name kibana \
    	--restart=always \
    	-p 5601:5601  \
    	-e ELASTICSEARCH_HOSTS=http://192.168.47.129:9200 \
    	kibana:8.7.0
    
  3. 对外开放9200、9300、5601端口,通过http://192.168.142.128:5601/可视化,虚拟机ip+5601端口
    firewall-cmd --zone=public --add-port=9200/tcp --permanent
    firewall-cmd --zone=public --add-port=9300/tcp --permanent
    firewall-cmd --zone=public --add-port=5601/tcp --permanent
    firewall-cmd --reload
    
  4. 在线安装ik分词器和py分词器(进入容器内部在线安装)
    (1) 进入elasticsearch容器内部
    docker exec -it elasticsearch /bin/bash
    (2) 在线下载并安装
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.7.0/elasticsearch-analysis-ik-8.7.0.zip
    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.7.0/elasticsearch-analysis-pinyin-8.7.0.zip
    (3) 退出 exit
    (4) 重启容器 docker restart elasticsearch
    
  5. 离线安装ik分词器py分词器(进入es-plugins数据卷所在目录,通过docker volume inspect es-plugins查看,将下载的压缩包分别解压到ik文件夹和py文件夹,上传到数据卷所在目录即可)

6. Redis

  1. 拉取redis:docker pull redis:7.0.11
  2. redis官网下载对应版本,复制其中的redis.conf到/data/redis目录下
  3. 编辑配置文件redis.conf
    mkdir -p /data/redis/data
    
    vim /data/redis/redis.conf
    daemonize yes		# 修改,默认为no,可以通过/进入底行模式,按N查找下一个找到位置,打开守护线程
    requirepass 123456	# 修改,取消注释,默认为oobared,修改密码为123456
    protected-mode no	# 修改,关闭保护模式,默认为yes
    bind 127.0.0.1 -::1	# 注释掉,或改为0.0.0.0,使redis可以外部访问
    appendonly yes		# 修改,开启redis持久化,默认为no
    
  4. 运行容器
    docker run -d \
    	--name redis \
    	--restart=always \
    	-p 6379:6379 \
    	-v /data/redis/redis.conf:/etc/redis/redis.conf \
    	-v /data/redis/data:/data \
    	redis:7.0.11 \
    	redis-server /etc/redis/redis.conf
    
  5. 对外开放6379端口
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload
    
  6. 所需依赖
    <!-- Redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  7. 配置文件
    spring:
      data:
        redis:
          host: 192.168.47.129
          port: 6379
          password: 123456
          jedis:
            pool:
              max-active: 8 # 最大连接数
              max-wait: 1ms # 连接池最大阻塞等待时间
              max-idle: 4   # 连接池中的最大空闲连接
              min-idle: 0   # 连接池中的最小空闲连接
    

7. RabbitMQ

  1. 拉取RabbitMQ:docker pull rabbitmq:3.11-management
  2. 创建文件挂载目录:mkdir -p /data/rabbitmq/data
  3. 运行容器,hostname(主机名)、端口15672用于UI界面管理,端口5672用于发送和接收消息
    docker run -d \
    	--name rabbitmq \
    	--hostname rabbitmq \
    	--restart=always \
    	-p 15672:15672 \
     	-p 5672:5672 \
    	-e RABBITMQ_DEFAULT_USER=superm \
    	-e RABBITMQ_DEFAULT_PASS=123456 \
    	-v /data/rabbitmq/data:/var/lib/rabbitmq \
    	rabbitmq:3.11-management
    
  4. 对外开放15672、5672端口
    firewall-cmd --zone=public --add-port=15672/tcp --permanent
    firewall-cmd --zone=public --add-port=5672/tcp --permanent
    firewall-cmd --reload
    
  5. 所需依赖
    <!-- Spring-AMQP -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值