创建目录:

mkdir -p \
/mydata/elasticsearch/plugins \
/mydata/elasticsearch/data \
/mydata/logstash \
/mydata/mysql/data/db \
/mydata/mysql/data/conf \
/mydata/mysql/log \
/mydata/redis/data \
/mydata/nginx/conf \
/mydata/nginx/html \
/mydata/nginx/log \
/mydata/rabbitmq/data \
/mydata/rabbitmq/log \
/mydata/mongo/db \
/mydata/minio/data \
/mydata/minio/config

docker部署elk:

docker network create elk

docker run -d --name elasticsearch \
  -p 9200:9200 -p 9300:9300 \
  -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
  -e "cluster.name=elasticsearch" \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
  --user root \
  --network elk \
  elasticsearch:7.17.3

docker run -d --name logstash \
  -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
  -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
  -e TZ=Asia/Shanghai \
  --network elk \
  logstash:7.17.3

docker run -d --name kibana \
  -p 5601:5601 \
  -e "elasticsearch.hosts=http://es:9200" \
  --network elk \
  kibana:7.17.3
  
# 安装ik分词器
docker exec -it elasticsearch bash
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.3
bin/elasticsearch-plugin list

docker部署mysql:

docker run -d --name mysql \
  -p 3306:3306 \
  -v /mydata/mysql/data/db:/var/lib/mysql \
  -v /mydata/mysql/data/conf:/etc/mysql/conf.d \
  -v /mydata/mysql/log:/var/log/mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  --restart=always \
  mysql:5.7 \
  mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker部署redis:

docker run -d --name redis \
  --privileged=true \ # centos7系统下加上此选项
  -p 6379:6379 \
  -v /mydata/redis/data:/data \
  redis:7 \
  redis-server --appendonly yes

docker部署rabbitmq:

docker run -d --name rabbitmq \
  --privileged=true \ # centos7系统下加上此选项
  -p 5672:5672 -p 15672:15672 \
  -v /mydata/rabbitmq/data:/var/lib/rabbitmq \
  -v /mydata/rabbitmq/log:/var/log/rabbitmq \
  rabbitmq:3.9-management

# 添加用户并设置权限
docker exec -it rabbitmq bash
rabbitmqctl add_user mall mall
rabbitmqctl add_vhost /mall
rabbitmqctl set_permissions -p /mall mall ".*" ".*" ".*"
rabbitmqctl list_vhosts

docker部署mongo:

docker run -d --name mongo \
  -p 27017:27017 \
  -v /mydata/mongo/db:/data/db \
  mongo:4

docker部署nacos:

docker run -d --name nacos-registry \
  -p 8848:8848 \
  -p 9848:9848 \
  -e MODE=standalone \
  nacos/nacos-server:v2.1.0

docker部署minio:

mkdir /mydata/minio/data -pv
mkdir /mydata/minio/config -pv

docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /mydata/minio/data:/data \
-v /mydata/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"

# 创建bucket并设置为public
docker exec -it minio bash
mc alias set myminio http://10.201.79.12:9000 minioadmin minioadmin
mc mb myminio/mall
mc anonymous set public myminio/mall
mc anonymous get myminio/mall
mc ls myminio
mc ls /
mc ls /mall
mc ls myminio/
mc ls myminio/mall/

jaeger:

docker run -d --name jaeger \
  -e SPAN_STORAGE_TYPE=elasticsearch \
  -e ES_SERVER_URLS=http://192.168.0.113:9200 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14268:14268 \
  -p 9411:9411 \
  -p 4317:4317 \
  jaegertracing/all-in-one:latest

# agent
java -javaagent:/opt/agents/opentelemetry-javaagent.jar \
     -Dotel.service.name=OrderService \
     -Dotel.traces.exporter=jaeger \
     -Dotel.exporter.jaeger.endpoint=http://192.168.0.113:14250 \
     -Dotel.traces.sampler=parentbased_traceidratio \
     -Dotel.traces.sampler.arg=1.0 \
     -Dotel.metrics.exporter=none \
     -jar app.jar

# or
# Dockerfile:
FROM openjdk:17

WORKDIR /app

COPY mall-admin-1.0-SNAPSHOT.jar /app/app.jar
COPY opentelemetry-javaagent.jar /app/opentelemetry-javaagent.jar

EXPOSE 8080
ENTRYPOINT ["java", "-javaagent:/app/opentelemetry-javaagent.jar", "-jar", "app.jar"]

# deployment env
- name: OTEL_EXPORTER_OTLP_PROTOCOL
  value: "grpc"
- name: OTEL_EXPORTER_OTLP_ENDPOINT
  value: "http://192.168.0.113:4317"
- name: OTEL_SERVICE_NAME
  value: "mall-admin"
- name: OTEL_TRACES_SAMPLER
  value: "parentbased_traceidratio"
- name: OTEL_TRACES_SAMPLER_ARG
  value: "1.0"
- name: OTEL_METRICS_EXPORTER
  value: "none"