Ubuntu利用docker搭建Java相关环境记录(二)

Ubuntu利用docker搭建Java相关环境记录(二)

接上篇:Ubuntu利用docker搭建Java相关环境记录(一)

启动Docker

1. 查看Docker容器

已启动的容器
docker ps
所有容器
docker ps -a

本人很懒并不想一直敲命令操作,所以先拉取Docker可视化面板Dpanel的镜像

2. 拉取Dpanel镜像

docker pull crpi-5qc4odiityxeoecl.cn-hangzhou.personal.cr.aliyuncs.com/aliyun-namespace-lym/dpanel:latest

注意这里用的是我的阿里云私有镜像仓库(之前推送了这个镜像到仓库)
`强力推荐这个工具,非常好用!!!

3. 启动Dpanel

docker run -d --name dpanel --restart=always \
	 -p 80:80 -p 443:443 -p 8807:8080 \
	 -v /var/run/docker.sock:/var/run/docker.sock \
	 -v /data/dpanel:/dpanel -e APP_NAME=DPANEL_HOME crpi-5qc4odiityxeoecl.cn-hangzhou.personal.cr.aliyuncs.com/aliyun-namespace-lym/dpanel:latest

4. 查看是否启动成功

docker ps

显示这些信息表示启动成功
在这里插入图片描述

5. 登录面板

浏览器输入http://you_server_ip:8807/即可看到如下页面。(首次登录需要设置账号密码)
在这里插入图片描述
登录后即可看到如下页面,后续拉取其他镜像的操作可以在页面进行
在这里插入图片描述

Dpanel 拉取镜像

Redis

compose菜单中创建任务,在右侧yml文件输入框中输入如下内容:

version: '3.8'

services:
  redis:
    image: redis:latest
    container_name: redis-server
    ports:
      - "6379:6379"
    volumes:
      - ./config/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis:/data
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: unless-stopped

在这里插入图片描述

提交
在这里插入图片描述
提交后点击启动按钮(拉取成功后按钮变为更新)即可拉取镜像,拉取成功后,会自动创建容器并启动。
在这里插入图片描述
后续其他镜像也是一样的操作方式

Kafka

因为kafka依赖于zookeeper所以两个镜像配置写在一起:

version: '3.8'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper-server
    ports:
      - "2181:2181"
    volumes:
      - /data/zookeeper:/var/lib/zookeeper
    restart: unless-stopped

  kafka:
    image: wurstmeister/kafka
    container_name: kafka-server
    ports:
      - "9092:9092"
    environment:
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper-server:2181
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
    volumes:
      - /data/kafka:/kafka
    depends_on:
      - zookeeper
    restart: unless-stopped
注意 拉取kafka时遇到的问题
zookeeper拉取后启动成功但是kafka启动不成功,一直显示重启中

使用 docker log 容器id 查看日志报错:

ERROR: Missing environment variable KAFKA_LISTENERS. Must be specified when using KAFKA_ADVERTISED_LISTENERS

原因:原因是没有设置 KAFKA_LISTENERS 环境变量。
解决方式: 在 Kafkadocker-compose.yml 文件中,添加 KAFKA_LISTENERS 环境变量,然后重启。

 - KAFKA_LISTENERS=PLAINTEXT://:9092
验证kafka是否安装成功
  1. 进入kafka容器
docker exec -it <kafka_container_name_or_id> /bin/bash
  1. 创建 topic
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
  1. 验证 topic 是否创建成功
kafka-topics.sh --list --bootstrap-server localhost:9092
  • 如果 test-topic 出现在列表中,说明 topic 创建成功。
  1. 使用 Kafka 控制台生产者发送消息
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic

输入消息,例如:

Hello, Kafka! This is a test message.

  1. 在另一个终端窗口中进入 Kafka 容器
docker exec -it <kafka_container_name_or_id> /bin/bash
  1. 使用 Kafka 控制台消费者接收消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
  1. 查看消息
    在这里插入图片描述

mysql 8.0

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql-server
    ports:
      - "3306:3306"
      - "33060:33060"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ddb_dev
    volumes:
      - /data/mysql:/var/lib/mysql
    restart: unless-stopped

rabbitMQ

version: '3.8'

services:
  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq-server
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - /data/rabbitmq:/var/lib/rabbitmq
    restart: unless-stopped

elasticsearch 7.14.0

version: '3.8'
services:
  elasticsearch:
    image: elasticsearch:7.14.0
    container_name: elasticsearch-server
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - cluster.name=es-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/elasticsearch:/usr/share/elasticsearch/data
    restart: unless-stopped

rocketMq

  • 这个和elasticsearch 一样对服务器配置有要求,内存 4G+,内存小部署上去存在启动不起来情况,网上有很多改配置的方法,但测试后发现不一定有用。
version: '3.8'

services:
  namesrv:
    image: apache/rocketmq:5.3.1  # 指定使用的 Docker 镜像,这里使用 Apache RocketMQ 5.3.1 版本
    container_name: rocketmq-server  # 设置容器名称
    ports:
      - "9876:9876" # 映射容器的 9876 端口到宿主机的 9876 端口,RocketMQ Nameserver 的默认端口
    networks:
      - rocketmq # 指定此服务运行在 rocketmq 网络中
    environment:
      - JAVA_OPTS=-Duser.home=/data/rocketmq
    volumes:
      - ./logs:/data/rocketmq/logs
      - ./store:/data/rocketmq/store
    command: ["sh", "mqnamesrv"] # 指定容器启动时执行的命令,这里是启动 mqnamesrv 服务
    restart: unless-stopped  # 容器退出后 不自动重启 always:自动重启

  broker:
    image: apache/rocketmq:5.3.1
    container_name: rocketmq-broker
    ports:
      - "10909:10909"
      - "10911:10911"
      - "10912:10912"
    networks:
      - rocketmq
    environment:
      - NAMESRV_ADDR=rocketmq-server:9876 # 设置 Nameserver 的地址,用于连接 Nameserver
      - JAVA_OPTS=-server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Duser.home=/data/rocketmq # 设置 Java 相关的 JVM 参数,限制最小和最大堆内存为 256MB
    volumes:
      - ./logs:/data/rocketmq/logs
      - ./store:/data/rocketmq/store
      - ./conf/broker.conf:/etc/rocketmq/broker.conf
    depends_on:
      - namesrv  # 确保 Nameserver 容器在 Broker 容器之前启动
    command: ["sh", "mqbroker"]
    restart: unless-stopped
    
# RocketMQ Web 管理界面服务
  rocketmq-dashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - "8088:8080"
    networks:
      - rocketmq # 此服务也运行在 rocketmq 网络中
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=rocketmq-server:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false #  设置 JAVA_OPTS,控制台监听 8080 端口,并连接 Nameserver 服务
    depends_on:
      - namesrv # 确保 Nameserver 容器在 dashboard 容器之前启动
      - broker  # 确保 broker  容器在 dashboard 容器之前启动
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '0.3' # 限制该服务最多使用 0.3 个 CPU 核心
          memory: 256M # 限制该服务最多使用 256MB 内存

  proxy:
    image: apache/rocketmq:5.3.1
    container_name: rocketmq-proxy
    networks:
      - rocketmq
    depends_on:
      - broker
      - namesrv
    ports:
      - "8080:8080"
      - "8081:8081"
    restart: on-failure
    environment:
      - NAMESRV_ADDR=rocketmq-server:9876
    command: ["sh", "mqproxy"]

# 定义一个名为 rocketmq 的网络
networks:
  rocketmq:
    driver: bridge # 使用 Docker 的桥接网络模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值