一份用于学习springcloud的快速搭建服务备忘录
yamal 文件
version: "3"
services:
# nacos 环境:单机
# 1、需要准备数据库表 见下面 >nacos数据库表
# 2、准备启动环境 见下面 >nacos-standlone-mysql.env
# 3、官网教程:https://nacos.io/docs/next/manual/admin/deployment/deployment-standalone/
nacos:
image: nacos/nacos-server:latest
container_name: nacosnacos-standlone-mysql.env
env_file:
# 这里挂载环境
- /home/liu/nacos-docker/env/nacos-standlone-mysql.env
volumes:
- /home/liu/nacos-logs/standalone-logs/:/home/nacos/logs
- /home/liu/wait-it.sh:/home/liu/wait-it.sh
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
restart: always
# 等待mysql服务启动,需要提前准备这个文件,github有,如果使用外部sql服务就不需要,但是需要更改nacos-standlone-mysql.env中的配置
command: bash -c "chmod +x /home/liu/wait-it.sh && /home/liu/wait-it.sh mysql:3306 --timeout=30 --echo 'mysql is up'"
depends_on:
- mysql
networks:
- cloud-net
# mysql 为nacos服务
mysql: # 服务名称
image: mysql:latest # 或其它mysql版本
container_name: mysql8 # 容器名称
environment:
- MYSQL_ROOT_PASSWORD=mysql_liu
# - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略
volumes:
- mysql:/var/lib/mysql
- /home/docker/mysql8/log:/var/log/mysql
- /home/docker/mysql8/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
networks:
- cloud-net
ports:
- 3306:3306
# 指定宿主机端口与容器端口映射关系,宿主机:容器
restart: always # 容器随docker启动自启
# 分布式事务
# 1、将resource拷贝出来 docker cp 容器名字:/seata-server/resources 自己linux服务第地址例如/home/liu/seata/resources
# 2、配置好里面的application,模板:https://github.com/apache/incubator-seata/blob/develop/server/src/main/resources/application.example.yml
# 3、将配置好的nacos中添加seata配置 例子见:下面的 >seataServer.properties
# 4、官网教程:https://seata.apache.org/zh-cn/docs/ops/deploy-by-docker-compose
seata-server:
image: seataio/seata-server:1.5.2
container_name: seata
ports:
- "7091:7091"
- "8091:8091"
environment:
- STORE_MODE=db
# 以SEATA_IP作为host注册seata server
- SEATA_IP=192.168.208.128
- SEATA_PORT=8091
volumes:
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区
# 假设我们通过docker cp命令把资源文件拷贝到相对路径`./seata-server/resources`中
# 如有问题,请阅读上面的[注意事项]以及[使用自定义配置文件]
- "/home/liu/seata/resources:/seata-server/resources"
depends_on:
- nacos
restart: always
networks:
- cloud-net
# 1、启动后配置延时队列插件 docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 2、官网教程:https://hub.docker.com/_/rabbitmq/
rabbitmq:
image: rabbitmq:3.8-management
container_name: rabbitmq
hostname: my-rabbit
ports:
- "5672:5672"
- "15672:15672"
networks:
- cloud-net
environment:
RABBITMQ_DEFAULT_USER: user
RABBITMQ_DEFAULT_PASS: password
volumes:
- mq_plugins:/plugins
# 官网教程: https://www.elastic.co/guide/en/elasticsearch/reference/current/run-elasticsearch-locally.html
kibana:
image: docker.elastic.co/kibana/kibana:7.12.1
container_name: kibana
networks:
- cloud-net
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: http://es:9200
ELASTICSEARCH_HOSTS: http://es:9200
ELASTICSEARCH_USERNAME: user
ELASTICSEARCH_PASSWORD: password
xpack.security.enabled: "false"
xpack.license.self_generated.type: trial
depends_on:
- es
es:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es
networks:
- cloud-net
ports:
- "9200:9200"
environment:
ELASTIC_PASSWORD: password
discovery.type: "single-node"
xpack.security.http.ssl.enabled: "false"
xpack.license.self_generated.type: trial
volumes:
- esdata:/usr/share/elasticsearch/data # 持久化Elasticsearch数据
networks:
cloud-net:
volumes:
esdata: # 定义持久化存储卷
mysql:
mq_plugins: # 定义持久化存储卷,用于存储 RabbitMQ 插件
nacos 配置
sql
CodeBlock Loading...
ENV环境
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=192.168.208.128
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=mysql_liu
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
seata 配置
seata TC启动的 application.yaml文件[nacos]
server:
port: 7091
spring:
application:
name: seata-server
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos
nacos:
server-addr: nacos_ip:nacos_port
namespace: seata-server
group: SEATA_GROUP
username: nacos
password: nacos
data-id: seataServer.properties
registry:
# support: nacos, eureka, redis, zk, consul, etcd3, sofa
type: nacos
nacos:
application: seata-server
server-addr: nacos_ip:nacos_port
group: SEATA_GROUP
namespace: seata-server
# tc集群名称
cluster: default
username: nacos
password: nacos
# server:
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
nacos配置文件seataServer.properties
CodeBlock Loading...