docker-compose搭建Docker環境的各種中介軟體服務
阿新 • • 發佈:2022-03-10
MySQL
docker-compose.yml
version: '2' services: mysql: network_mode: "bridge" environment: MYSQL_ROOT_PASSWORD: "Mysql@1111" MYSQL_USER: 'test' MYSQL_PASS: '1111' image: "mysql:5.7" restart: always volumes: - "./db:/var/lib/mysql" - "./conf/my.cnf:/etc/my.cnf" - "./init:/docker-entrypoint-initdb.d/" ports: - "3306:3306"
my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
max_allowed_packet=10485760
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
Redis
單機模式
docker-compose.yml
version: '2' services: master: image: redis ## 映象 container_name: redis-single ##容器別名 command: redis-server --save 900 1 --save 300 10 --save 10 10000 --requirepass Zdk@2020 ##redis密碼 restart: always ports: - "6379:6379" ##暴露埠 volumes: - ./redis.conf:/etc/redis/redis.conf - ./data:/data
哨兵
redis服務(一主二從)docker-compose.yml(該配置存在問題:啟動一段時間後會瘋狂佔用消耗硬體資源,暫未查出原因,不可照搬使用)
version: '2' services: master: image: redis ## 映象 container_name: redis-master ##容器別名 command: redis-server --save 900 1 --save 300 10 --save 10 10000 --requirepass Zdk@2020 ##redis密碼 # restart: always ports: - "6379:6379" ##暴露埠 volumes: - ./redis.conf:/etc/redis/redis.conf - ./data/6379/data:/data # networks: # - sentinel-master slave1: image: redis container_name: redis-slave-1 # restart: always ports: - "6380:6379" command: redis-server --save 900 1 --save 300 10 --save 10 10000 --slaveof redis-master 6379 --requirepass Zdk@2020 --masterauth Zdk@2020 depends_on: - master volumes: - ./redis.conf:/etc/redis/redis.conf - ./data/6380/data:/data # networks: # - sentinel-master slave2: image: redis container_name: redis-slave-2 # restart: always ports: - "6381:6379" command: redis-server --slaveof redis-master 6379 --save 900 1 --save 300 10 --save 10 10000 --requirepass Zdk@2020 --masterauth Zdk@2020 depends_on: - master volumes: - ./redis.conf:/etc/redis/redis.conf - ./data/6381/data:/data
三哨兵docker-compose.yml
version: '2'
services:
sentinel1:
image: redis ## 映象
container_name: redis-sentinel-1
# restart: always
ports:
- "26379:26379"
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- "./sentinel1.conf:/usr/local/etc/redis/sentinel.conf"
sentinel2:
image: redis ## 映象
container_name: redis-sentinel-2
# restart: always
ports:
- "26380:26379"
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- "./sentinel2.conf:/usr/local/etc/redis/sentinel.conf"
sentinel3:
image: redis ## 映象
container_name: redis-sentinel-3
# restart: always
ports:
- "26381:26379"
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
networks:
default:
external:
name: service_default
sentinel.conf
port 26379
dir "/tmp"
#172.18.0.3填寫自己的主節點ip
sentinel myid 3af80a2d2e356259870dcee86ec4c924cc06097b
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 172.18.0.4 6379 2
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster Zdk@2020
sentinel config-epoch mymaster 10
zookeeper
version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- 2181:2181
volumes:
- ./zoo1/data:/data
- ./zoo1/datalog:/datalog
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
container_name: zoo2
ports:
- 2182:2181
volumes:
- ./zoo2/data:/data
- ./zoo2/datalog:/datalog
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
container_name: zoo3
ports:
- 2183:2181
volumes:
- ./zoo3/data:/dada
- ./zoo3/datalog:/datalog
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
RocketMQ
version: '3.5'
services:
rmqnamesrv:
image: foxiswho/rocketmq:server
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
networks:
rmq:
aliases:
- rmqnamesrv
rmqbroker:
image: foxiswho/rocketmq:broker
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
- ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmn128m"
command: mqbroker -c /etc/rocketmq/broker.conf
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 8088:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
Kafka
version: '3'
services:
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- 9092:9092
# host ip
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: 172.23.51.10:2181
# always restart
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Elasticsearch
version: '3'
services:
# search engine
elasticsearch:
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.1
image: elasticsearch:7.9.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- http.port=9200
- http.cors.enabled=true
- http.cors.allow-origin=http://localhost:1358
- http.cors.allow-origin=*
- http.cors.allow-origin=http://localhost:1358,http://127.0.0.1:1358
- http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-credentials=false
- bootstrap.memory_lock=true
- 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
volumes:
- ./data:/usr/share/elasticsearch/data
ports:
- '9200:9200'
- '9300:9300'
# elasticsearch browser
dejavu:
image: appbaseio/dejavu:3.2.3
container_name: dejavu
ports:
- '1358:1358'
links:
- elasticsearch