Implatnação do Banco de Dados MySQL
Para inicializar um container MySQL com persistência de dados e configurações customizadas, utilize a seguinte estrutura:
docker run -d \
--name db-mysql-instance \
-p 3306:3306 \
-e TZ=America/Sao_Paulo \
-e MYSQL_ROOT_PASSWORD=root_secure_pwd \
-v $PWD/mysql/storage:/var/lib/mysql \
-v $PWD/mysql/config:/etc/mysql/conf.d \
-v $PWD/mysql/scripts:/docker-entrypoint-initdb.d \
mysql:8.0
Configuração do Servidor Web Nginx
O comando abaixo mapeia os volumes para o conteúdo estático e o arquivo de configuração principal, integrando o container a uma rede específica:
docker run -d \
--name web-proxy-server \
-p 80:80 \
-p 443:443 \
-v /opt/nginx/html:/usr/share/nginx/html \
-v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network net-app-cluster \
nginx:latest
Mensageria com RabbitMQ
Este comando levanta o RabbitMQ com o plugin de gerenciamento ativado e define credenciais administrativas:
docker run -d \
--name mq-broker \
--hostname mq-node-01 \
-e RABBITMQ_DEFAULT_USER=admin_user \
-e RABBITMQ_DEFAULT_PASS=admin_pass \
-p 5672:5672 \
-p 15672:15672 \
rabbitmq:3-management
Servidor de Transação Seata
Antes de executar, certifique-se de que o arquivo application.yml no volume mapeado contenha as credenicais corretas do banco de dados.
docker run -d --name seata-server \
-p 8099:8099 \
-p 7099:7099 \
-e SEATA_IP=172.17.0.1 \
-v ./seata_config:/seata-server/resources \
--privileged=true \
--network net-services \
seataio/seata-server:1.5.2
Instalação e Configuração do MongoDB
Para o MongoDB, o processo envolve a criação do container seguida pela configuração inicial de usuários:
# Download da imagem
docker pull mongo:4.4
# Criação do container com autenticação
docker run --name mongo-db-container -p 27017:27017 -v mongo_vol:/data/db -d mongo:4.4 --auth
# Acesso ao shell para criação de usuários
docker exec -it mongo-db-container mongo admin
# Comandos internos do MongoDB:
# db.createUser({ user: 'admin', pwd: 'password123', roles: [ { role: 'root', db: 'admin' } ] })
# db.auth('admin', 'password123')
Stack ElasticSearch e Kibana com IK Analyzer
Primeiro, crie uma rede para a comunicação entre os serviços:
docker network create search-net
Implante o ElasticSearch:
docker run -d \
--name es-engine \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es_data:/usr/share/elasticsearch/data \
-v es_plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network search-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
Implante o Kibana:
docker run -d \
--name kibana-dashboard \
-e ELASTICSEARCH_HOSTS=http://es-engine:9200 \
--network search-net \
-p 5601:5601 \
kibana:7.12.1
Para instalar o plugin IK Analyzer:
docker exec -it es-engine /bin/bash -c "./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip"
docker restart es-engine
Central de Configuração Nacos
A implantação do Nacos requer a definição de variáveis de ambiente, preferencialmente via arquivo .env:
docker run -d \
--name nacos-standalone \
--env-file ./nacos/env_vars.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=unless-stopped \
nacos/nacos-server:v2.1.0-slim
Storage de Objetos MinIO
Configuração do MinIO para armazenamento de arquivos com console administrativo:
# Preparação dos diretórios locais
mkdir -p /mnt/minio/config /mnt/minio/data
# Execução do container
docker run -d \
-p 9000:9000 -p 9090:9090 \
--name minio-server \
--restart=always \
-e "MINIO_ROOT_USER=storage_admin" \
-e "MINIO_ROOT_PASSWORD=storage_secret" \
-v /mnt/minio/data:/data \
-v /mnt/minio/config:/root/.minio \
minio/minio server /data --console-address ":9090"
Agendador de Tarefas XXL-JOB
Para o XXL-JOB, passamos as configurações do banco de dados diretamente via parâmetros de inicialização do Spring:
docker run -d \
--name scheduler-xxl-job \
-p 8088:8080 \
-e PARAMS="--spring.datasource.url=jdbc:mysql://db-mysql-instance:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&useSSL=false \
--spring.datasource.username=root \
--spring.datasource.password=root_secure_pwd" \
xuxueli/xxl-job-admin:2.3.1