常用服务部署
Redis 5.0
docker pull redis:5.0
docker run --name redis5.0 --restart always -d \
-v /data/docker_data/redis:/data \
-p 6379:6379 \
redis:5.0 \
redis-server --save 60 1 --loglevel warningMySQL 8.0
docker pull mysql:8.0
docker run --name mysql8.0 --restart always -d \
-v /data/docker_data/mysql:/var/lib/mysql \
-p 3306:3306 \
-p 33060:33060 \
-e MYSQL_ROOT_PASSWORD=sensors_2024. \
mysql:8.0Kafka 3.7.0
docker pull bitnami/kafka:3.7.0
# 需将要挂载的宿主机目录属主和属组设置为"id"为 1001 的用户,此处添加"kafka"用户,并指定 uid、gid 为1001
useradd kafka -u 1001
# 新版kafka不需要zookeeper(2.8.0版本后就不依赖zk了)
docker run --name kafka3.7.0 --restart always -d --hostname kafka-server \
-v /data/docker_data/kafka:/bitnami/kafka \
-p 9092:9092 \
-p 9093:9093 \
-e KAFKA_CFG_NODE_ID=0 \
-e KAFKA_CFG_PROCESS_ROLES=controller,broker \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-server:9093 \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
bitnami/kafka:3.7.0Nacos 2.3.1
docker pull nacos/nacos-server:v2.3.1
docker run --name nacos2.3.1 --restart always -d \
-e MODE=standalone \
-v /data/docker_data/nacos:/home/nacos/data \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.3.1
# 此处将容器里的 /home/nacos/data 做持久化操作Jenkins 2.440.2-lts
docker pull jenkins/jenkins:2.440.2-lts
# 修改宿主机所需数据持久化目录的属主和属组为容器中jenkins用户对应的属主和属组
chown -R 1000:1000 /data/docker_data/jenkins/jenkins_home
docker run --name jenkins2.440.2 --restart always -d \
-p 8080:8080 \
-p 50000:50000 \
-v /data/docker_data/jenkins/jenkins_home:/var/jenkins_home \
jenkins/jenkins:2.440.2-lts
# 容器启动后访问宿主机ip:8080即可打开jenkins的web页面
# 推荐安装默认的插件,还需安装插件:maven、gitee、ssh、dockerPG14
mkdir -p /opt/docker-container/postgres/{data,conf,logs}
chown 70:70 /opt/docker-container/postgres/data/
chown 70:70 /opt/docker-container/postgres/logs/
cat > /opt/docker-container/postgres/conf/postgresql.conf << EOF
listen_addresses = '*'
max_connections = 500
log_destination = 'stderr,csvlog' # 同时输出到stderr和csv文件
logging_collector = on # 启用日志收集器
log_directory = '/var/log/postgresql' # 日志目录
log_filename = 'postgresql-%Y-%m-%d.log' # 日志文件名格式
log_rotation_age = 1d # 每天轮转日志
log_rotation_size = 100MB # 每100MB轮转
log_min_messages = warning # 记录warning及以上级别
log_min_error_statement = error # 记录错误语句
log_min_duration_statement = 1000 # 记录执行超过1s的语句
log_statement = 'all' # 记录所有SQL语句
EOF
cat > postgres-14.yaml << EOF
services:
postgres:
image: postgres:14.17-alpine
container_name: postgres14
environment:
POSTGRES_USER: postgres # 替换为你的用户名
POSTGRES_PASSWORD: PG.14@17#Ap # 替换为你的密码
POSTGRES_DB: postgres # 替换为默认数据库名
# TZ: Asia/Shanghai # 设置容器时区(与宿主机同步)
POSTGRESQL_LOGGING: "true"
POSTGRESQL_LOG_STATEMENT: "all" # 记录所有SQL语句
volumes:
- /opt/docker-container/postgres/conf/postgresql.conf:/etc/postgresql/postgresql.conf
- /opt/docker-container/postgres/data:/var/lib/postgresql/data # 数据持久化到本地
- /opt/docker-container/postgres/logs:/var/log/postgresql # 日志持久化到本地
- /etc/localtime:/etc/localtime:ro
command: postgres -c config_file=/etc/postgresql/postgresql.conf
ports:
- "5432:5432" # 暴露端口
restart: unless-stopped # 容器自动重启
EOF
docker compose -f postgres-14.yaml up -dRedis7
mkdir -p /opt/docker-container/redis/{data,logs,conf}
chown -R 999:999 /opt/docker-container/redis/logs
cat > /opt/docker-container/redis/conf/redis.conf << EOF
# Redis 服务器绑定的 IP 地址,默认绑定 127.0.0.1,只允许本地连接
# 若要允许外部连接,可将其注释掉或改为 0.0.0.0
bind 0.0.0.0
# Redis 监听的端口号,默认为 6379
port 6379
# 是否以守护进程模式运行,yes 表示以守护进程模式运行,no 表示前台运行
daemonize no
# 日志文件路径,若设置为空字符串,则将日志输出到标准输出
logfile /var/log/redis/redis-server.log
#logfile ""
loglevel notice
# 数据库数量,默认有 16 个数据库,编号从 0 到 15
databases 16
# Redis 持久化方式,可选择 RDB(快照)或 AOF(追加式文件)
# 这里启用 RDB 持久化,当满足以下条件时会自动生成快照
save 900 1
save 300 10
save 60 10000
# RDB 文件的保存路径和文件名
dir /data
dbfilename dump.rdb
# 是否开启 AOF 持久化,yes 表示开启,no 表示关闭
appendonly yes
# AOF 文件的同步策略
# always 表示每次写入都同步到磁盘;everysec 表示每秒同步一次;no 表示由操作系统决定何时同步
# appendfsync everysec
# Redis 密码,若设置了密码,客户端连接时需要使用 AUTH 命令进行身份验证
requirepass R.7dis@952
# 最大客户端连接数,0 表示无限制
maxclients 10000
# 最大内存使用量,当达到该值时,Redis 会根据配置的淘汰策略删除一些键
# maxmemory <bytes>
# 内存淘汰策略,可选值有:
# volatile-lru:删除最近最少使用的过期键
# allkeys-lru:删除最近最少使用的键
# volatile-random:随机删除过期键
# allkeys-random:随机删除键
# volatile-ttl:删除即将过期的键
# noeviction:不删除任何键,当内存不足时返回错误
# maxmemory-policy noeviction
EOF
cat > redis-7.yaml << EOF
services:
redis:
image: redis:7-alpine
container_name: redis7
ports:
- "6379:6379"
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/docker-container/redis/data:/data
- /opt/docker-container/redis/conf/redis.conf:/etc/redis/redis.conf
- /opt/docker-container/redis/logs:/var/log/redis
command: redis-server /etc/redis/redis.conf
restart: unless-stopped
EOF
docker compose -f redis-7.yaml up -dEtcd3
mkdir -p /opt/docker-container/etcd/{data,conf,logs}
cat > /opt/docker-container/etcd/conf/etcd.conf.yaml << EOF
name: 'etcd1'
data-dir: '/etcd-data'
wal-dir: ''
snapshot-count: 10000
heartbeat-interval: 100
election-timeout: 1000
quota-backend-bytes: 0
enable-pprof: false
metrics: 'basic'
logger: 'zap'
log-outputs: ['/var/log/etcd/etcd.log']
log-level: 'info'
max-request-bytes: 1572864
auto-compaction-mode: 'periodic'
auto-compaction-retention: '1h'
max-txn-ops: 128
listen-peer-urls: 'http://0.0.0.0:2380'
listen-client-urls: 'http://0.0.0.0:2379'
max-snapshots: 5
max-wals: 5
initial-advertise-peer-urls: 'http://0.0.0.0:2380'
advertise-client-urls: 'http://0.0.0.0:2379'
discovery: ''
discovery-fallback: 'proxy'
discovery-proxy: ''
discovery-srv: ''
initial-cluster: 'etcd1=http://0.0.0.0:2380'
initial-cluster-token: 'etcd-cluster'
initial-cluster-state: 'new'
strict-reconfig-check: false
enable-v2: false
cors: ''
EOF
cat > etcd-3.yaml << EOF
services:
etcd:
# image: quay.io/coreos/etcd:v3.5.21
image: etcd:v3.5.21
container_name: etcd3
restart: unless-stopped
environment:
- ETCD_NAME=etcd1
volumes:
- /opt/docker-container/etcd/data:/etcd-data
- /opt/docker-container/etcd/logs:/var/log/etcd
- /opt/docker-container/etcd/conf/etcd.conf.yaml:/etc/etcd/etcd.conf.yaml
command: /usr/local/bin/etcd --config-file /etc/etcd/etcd.conf.yaml
ports:
- "2379:2379"
- "2380:2380"
EOF
# etcdctl https://github.com/etcd-io/etcd/releases
etcdctl --endpoints=http://192.168.1.25:2379 endpoint status
# 添加user
etcdctl --endpoints=http://192.168.1.25:2379 user add root
E.t/[email protected]
# 添加role
etcdctl --endpoints=http://192.168.1.25:2379 role add root
# 授权
etcdctl --endpoints=http://192.168.1.25:2379 user grant-role root root
# 启用认证
etcdctl --endpoints=http://192.168.1.25:2379 auth enable
# 增、查
etcdctl --endpoints=http://192.168.1.25:2379 --user=root:E.t/[email protected] put foo bar
etcdctl --endpoints=http://192.168.1.25:2379 --user=root:E.t/[email protected] get foo
Last updated