docker部署服务
docker中访问本机 ip 地址使用
host.docker.internal变量
Nginx
拉取镜像
docker pull nginx拷贝配置文件
第一次运行 nginx 镜像的命令:容器名
nginx
docker run -d -p 80:80 --name nginx nginx:latest配置文件 nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }编排
services: nginx: image: nginx:latest container_name: nginx ports: - "80:80" volumes: - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./data/html/:/usr/share/nginx/html/ - ./logs/:/var/log/nginx/ restart: always
MySQL
拉取镜像
docker pull mysql:8.4.3创建配置目录
# 配置文件 mkdir -p /opt/docker-data/mysql/conf # 数据文件 mkdir -p /opt/docker-data/mysql/data # 日志文件 mkdir -p /opt/docker-data/mysql/logs创建配置文件
cd /opt/docker-data/mysql/conf vim my.cnf[client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4 socket=/var/lib/mysql/mysql.sock [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [mysqld] # 设置3306端口 port=3306 # 允许最大连接数 max_connections=1000 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=100 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 是否对sql语句大小写敏感,1表示不敏感 lower_case_table_names=1 # MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 interactive_timeout =1800 # MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效 wait_timeout=1800 # Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6 # 执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞 lock_wait_timeout=3600 # 内部内存临时表的最大值。 # 比如大数据量的group by ,order by时可能用到临时表, # 超过了这个值将写入磁盘,系统IO压力增大 tmp_table_size=64M max_heap_table_size=64M # 设置分组模式 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' # 设置全局聚合方式 init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_general_ci' # 设置密码验证规则 mysql_native_password=ON # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # 禁用DNS解析 skip-name-resolve # 设置数据目录 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # 日志设置 # 启用常规查询日志 general_log = 1 # 常规日志文件路径 general_log_file = /var/log/mysql/mysql.log # 最大二进制日志文件大小 max_binlog_size = 100M # 启用慢查询日志 # 无论是否超时,未被索引的记录也会记录下来 log_queries_not_using_indexes=1 # 全局开启慢查询功能 slow_query_log=1 # 慢查询阈值(秒),SQL 执行超过这个阈值将被记录在日志中 long_query_time=1 # 慢查询仅记录扫描行数大于此参数的 SQL min_examined_row_limit=500 # 指定慢查询日志存储文件的地址和文件名 slow_query_log_file=/var/log/mysql/mysql_slow.log # 错误日志文件路径 log_error = /var/log/mysql/mysql_error.log运行容器
docker run -d \ --name=mysql \ -p 3306:3306 \ --restart=always \ --privileged=true \ -v /opt/docker-data/mysql/conf:/etc/mysql/conf.d \ -v /opt/docker-data/mysql/data:/var/lib/mysql \ -v /opt/docker-data/mysql/logs:/logs \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:8.4.3
编排
services:
mysql:
image: mysql:8.4.3
container_name: mysql
privileged: true
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
networks:
- mysql-network
ports:
- "3306:3306"
volumes:
- /opt/docker-data/mysql/data:/var/lib/mysql
- /opt/docker-data/mysql/conf/my.cnf:/etc/my.cnf
- /opt/docker-data/mysql/logs:/var/log/mysql
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
command:
- --mysql-native-password=on
networks:
mysql-network:Rabbitmq
拉取镜像
docker pull rabbitmq:management运行容器
docker run -d \ --name rabbitmq \ -e RABBITMQ_DEFAULT_USER=dream \ -e RABBITMQ_DEFAULT_PASS=123456 \ -p 15672:15672 \ -p 5672:5672 \ rabbitmq:management访问页面
<服务器>:15672
Nacos
拉取镜像
docker pull nacos/nacos-server:latest创建日志和配置文件目录
mkdir -p /opt/nacos/logs mkdir -p /opt/nacos/init.d mkdir -p /opt/nacos/dada创建nacos配置数据库
nacos_config官网地址:nacos数据库地址
/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* 数据库名 = nacos_config */ CREATE DATABASE nacos_config; USE nacos_config; /******************************************/ /* 表名称 = config_info */ /******************************************/ CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description', `c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage', `effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述', `type` varchar(64) DEFAULT NULL COMMENT '配置的类型', `c_schema` text COMMENT '配置的模式', `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; /******************************************/ /* 表名称 = config_info_aggr */ /******************************************/ CREATE TABLE `config_info_aggr` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', `content` longtext NOT NULL COMMENT '内容', `gmt_modified` datetime NOT NULL COMMENT '修改时间', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段'; /******************************************/ /* 表名称 = config_info_beta */ /******************************************/ CREATE TABLE `config_info_beta` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; /******************************************/ /* 表名称 = config_info_tag */ /******************************************/ CREATE TABLE `config_info_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; /******************************************/ /* 表名称 = config_tags_relation */ /******************************************/ CREATE TABLE `config_tags_relation` ( `id` bigint(20) NOT NULL COMMENT 'id', `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', `nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识', PRIMARY KEY (`nid`), UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; /******************************************/ /* 表名称 = group_capacity */ /******************************************/ CREATE TABLE `group_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; /******************************************/ /* 表名称 = his_config_info */ /******************************************/ CREATE TABLE `his_config_info` ( `id` bigint(20) unsigned NOT NULL COMMENT 'id', `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识', `data_id` varchar(255) NOT NULL COMMENT 'data_id', `group_id` varchar(128) NOT NULL COMMENT 'group_id', `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', `content` longtext NOT NULL COMMENT 'content', `md5` varchar(32) DEFAULT NULL COMMENT 'md5', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', `src_user` text COMMENT 'source user', `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', `op_type` char(10) DEFAULT NULL COMMENT 'operation type', `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥', PRIMARY KEY (`nid`), KEY `idx_gmt_create` (`gmt_create`), KEY `idx_gmt_modified` (`gmt_modified`), KEY `idx_did` (`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; /******************************************/ /* 表名称 = tenant_capacity */ /******************************************/ CREATE TABLE `tenant_capacity` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; CREATE TABLE `tenant_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `kp` varchar(128) NOT NULL COMMENT 'kp', `tenant_id` varchar(128) default '' COMMENT 'tenant_id', `tenant_name` varchar(128) default '' COMMENT 'tenant_name', `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; CREATE TABLE `users` ( `username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username', `password` varchar(500) NOT NULL COMMENT 'password', `enabled` boolean NOT NULL COMMENT 'enabled' ); CREATE TABLE `roles` ( `username` varchar(50) NOT NULL COMMENT 'username', `role` varchar(50) NOT NULL COMMENT 'role', UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE ); CREATE TABLE `permissions` ( `role` varchar(50) NOT NULL COMMENT 'role', `resource` varchar(128) NOT NULL COMMENT 'resource', `action` varchar(8) NOT NULL COMMENT 'action', UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE );运行
docker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --privileged=true \ --restart=always \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=124.222.109.240 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -v /opt/nacos/logs:/home/nacos/logs \ -v /opt/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \ -v /opt/nacos/data:/home/nacos/data \ nacos/nacos-server:latest 访问地址
http://<server>:8848/nacos
Sentinel-dashboard
拉取镜像
docker pull bladex/sentinel-dashboard:latest运行
docker run -d \ --name sentinel-dashboard \ --restart=always \ --privileged=true \ -p 8858:8858 \ -p 8719:8719 \ bladex/sentinel-dashboard:latest访问
http:<server>:8858默认用户密码:sentinel
Seata
拉取镜像
docker pull ssgssg/seata:1.4.0创建文件夹
mkdir -p /opt/seata/seata-data
Gogs
拉取镜像
docker pull gogs/gogs创建挂载卷
mkdir /opt/docker-data/gogs创建容器
docker run -d \ --name gogs \ -p 10022:22 \ -p 13000:3000 \ -v /opt/docker-data/gogs:/data \ gogs/gogs编排
services: gogs: image: gogs/gogs container_name: gogs ports: - "10022:22" - "13000:3000" volumes: - /opt/docker-data/gogs:/data restart: always访问
http://<server>:13000
Minio
拉取镜像
docker pull minio/minio挂载目录
mkdir -p /opt/docker-data/minio/conf mkdir -p /opt/docker-data/minio/data创建容器
docker run \ -p 9000:9000 \ -p 9001:9001 \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=minio" \ -e "MINIO_SECRET_KEY=minio123456" \ -v /opt/docker-data/minio/data:/data \ -v /opt/docker-data/minio/conf:/root/.minio \ minio/minio server \ /data --console-address ":9001" -address ":9000"编排
services: minio: image: minio/minio container_name: minio restart: always environment: MINIO_ACCESS_KEY: "minio" MINIO_SECRET_KEY: "minio123456" ports: - "9000:9000" - "9001:9001" command: server /data --console-address ":9001" -address ":9000" volumes: - /opt/docker-data/minio/data:/data - /opt/docker-data/minio/conf:/root/.minio networks: - minio_network networks: minio_network:访问
http:<server>:9001
Redis
拉取镜像
docker pull redis:latest创建数据目录
mkdir -p /opt/docker-data/redis/data运行容器
docker run -d \ --name redis \ --restart=always \ -p 6380:6379 \ redis:latest \ --requirepass 123456备份
rdb备份# 每6小时(21600秒)内有至少1000个修改则备份 save 21600 1000 # 每1小时(3600秒)内有至少100个修改则备份 save 3600 100 # 每5分钟(300秒)内有至少10个修改则备份 save 300 10 # 每1分钟(60秒)内有至少10000个修改则备份 save 60 10000AOF备份不停机从
rdb开启aof备份# 2. 动态开启AOF config set appendonly yes # 3. 将当前内存数据写入AOF文件 bgrewriteaof# 是否启用AOF持久化 appendonly yes编排文件
services: redis: image: redis:latest container_name: redis ports: - "6379:6379" volumes: - ./data:/data - ./conf/redis.conf:/etc/redis/redis.conf - ./logs:/logs restart: always command: redis-server /etc/redis/redis.conf --requirepass 123456 networks: - redis_network networks: redis_network:精简配置文件
# 绑定的IP地址,0.0.0.0表示监听所有网络接口 bind 0.0.0.0 # 启用保护模式,只允许本地连接或已认证的连接 protected-mode yes # 监听的端口号 port 6379 # TCP连接的最大等待队列长度 tcp-backlog 511 # 客户端超时时间(秒),0表示永不超时 timeout 0 # TCP连接保活时间(秒) tcp-keepalive 300 # 是否以守护进程方式运行,no表示在前台运行 daemonize no # PID文件路径 pidfile /var/run/redis_6379.pid # 日志级别:debug、verbose、notice、warning loglevel notice # 日志文件路径,空字符串表示输出到标准输出 logfile "" # 数据库数量 databases 16 # 是否是否总是显示Redis Logo always-show-logo no # 是否是否设置进程标题 set-proc-title yes # 进程标题模板 proc-title-template "{title} {listen-addr} {server-mode}" # 用于字符串排序的区域设置,空表示使用默认 locale-collate "" # 当后台保存失败时是否停止写入操作 stop-writes-on-bgsave-error yes # 是否对RDB文件进行压缩 rdbcompression no # 是否对RDB文件进行校验和检查 rdbchecksum yes # RDB文件名 dbfilename dump.rdb # 同步后是否删除RDB文件 rdb-del-sync-files no # 数据文件和持久化文件存放目录 dir ./ # 当主库连接失败时,从库是否仍响应客户端请求 replica-serve-stale-data yes # 从库是否为只读模式 replica-read-only yes # 是否启用无盘同步 repl-diskless-sync yes # 无盘同步的延迟时间(秒) repl-diskless-sync-delay 5 # 无盘同步支持的最大从库数量 repl-diskless-sync-max-replicas 0 # 无盘加载模式 repl-diskless-load disabled # 从库是否禁用TCP_NODELAY repl-disable-tcp-nodelay no # 从库优先级,用于主库选举 replica-priority 100 # ACLACL日志的最大长度 acllog-max-len 128 # 内存不足时是否使用惰性删除策略(驱逐) lazyfree-lazy-eviction no # 过期过期键是否使用惰性删除 lazyfree-lazy-expire no # 服务器删除操作是否使用惰性删除 lazyfree-lazy-server-del no # 从库是否使用惰性删除策略刷新数据 replica-lazy-flush no # 用户删除键是否使用惰性删除 lazyfree-lazy-user-del no # 用户执行FLUSH操作是否使用惰性删除 lazyfree-lazy-user-flush no # 是否是否调整Redis进程调整OOM分数 oom-score-adj no # OOM分数调整值 oom-score-adj-values 0 200 800 # 是否禁用透明页(Transparent Huge Pages) disable-thp yes # 自动RDB备份配置(新增) # 格式:save <seconds> <changes> # 表示在seconds秒内有至少changes个键被修改则自动触发RDB备份 # 每6小时(21600秒)内有至少1000个修改则备份 save 21600 1000 # 每1小时(3600秒)内有至少100个修改则备份 save 3600 100 # 每5分钟(300秒)内有至少10个修改则备份 save 300 10 # 每1分钟(60秒)内有至少10000个修改则备份 save 60 10000 # 是否启用AOF持久化 appendonly yes # AOF文件名 appendfilename "appendonly.aof" # AOF文件存放目录 appenddirname "appendonlydir" # AOF持久化策略:always(每次写都同步)、everysec(每秒同步)、no(由操作系统决定) appendfsync everysec # 重写AOF时是否不进行appendfsync操作 no-appendfsync-on-rewrite no # AOF自动重写的触发百分比 auto-aof-rewrite-percentage 100 # AOF自动重写的最小文件大小 auto-aof-rewrite-min-size 64mb # 加载AOF文件时是否允许截断的文件 aof-load-truncated yes # AOF文件是否使用RDB前缀 aof-use-rdb-preamble yes # AOF文件是否启用时间戳 aof-timestamp-enabled no # 慢查询日志的阈值(微秒),超过此值的命令会被记录 slowlog-log-slower-than 10000 # 慢查询日志的最大长度 slowlog-max-len 128 # 延迟监控阈值(微秒),0表示禁用 latency-monitor-threshold 0 # 键空间事件通知的配置,空表示禁用 notify-keyspace-events "" # Hash类型使用listpack编码的最大条目数 hash-max-listpack-entries 512 # Hash类型使用listpack编码的最大值大小(字节) hash-max-listpack-value 64 # List类型使用listpack编码的最大大小 list-max-listpack-size -2 # List类型的压缩深度 list-compress-depth 0 # Set类型使用intset编码的最大条目数 set-max-intset-entries 512 # Set类型使用listpack编码的最大条目数 set-max-listpack-entries 128 # Set类型使用listpack编码的最大值大小(字节) set-max-listpack-value 64 # ZSet类型使用listpack编码的最大条目数 zset-max-listpack-entries 128 # ZSet类型使用listpack编码的最大值大小(字节) zset-max-listpack-value 64 # HyperLogLog稀疏表示的最大字节数 hll-sparse-max-bytes 3000 # Stream节点的最大字节数 stream-node-max-bytes 4096 # Stream节点的最大条目数 stream-node-max-entries 100 # 是否是否启用动重新哈希 activerehashing yes # 普通客户端的输出缓冲区限制 client-output-buffer-limit normal 0 0 0 # 从库客户端的输出缓冲区限制 client-output-buffer-limit replica 256mb 64mb 60 # Pub/Sub客户端的输出缓冲区限制 client-output-buffer-limit pubsub 32mb 8mb 60 # 服务器每秒执行后台任务的次数 hz 10 # 是否启用动态hz调整 dynamic-hz yes # AOF重写时是否启用增量fsync aof-rewrite-incremental-fsync yes # RDB保存时是否启用增量fsync rdb-save-incremental-fsync yes # 是否启用jemalloc后台线程 jemalloc-bg-thread yes
Frp
服务端
拉取镜像
docker pull stilleshan/frps添加 fr ps.ini 配置文件
https://github.com/stilleshan/frps
https://raw.githubusercontent.com/ruinny/frps-in-docker/master/frps.ini
rm -rf /opt/docker-data/frps && \ mkdir -p /opt/docker-data/frps && \ mkdir -p /opt/docker-data/frps/conf && \ mkdir -p /opt/docker-data/frps/log && \ touch /opt/docker-data/frps/log/frps.log && \ cd /opt/docker-data/frps/conf && \ wget https://raw.githubusercontent.com/ruinny/frps-in-docker/master/frps.ini && \ chmod +x frps.ini && \ mv frps.ini ./frps.toml说明
配置文件存放在/var/frp/conf
默认80和443端口映射到7080和7443,如需改回去的自己修改
默认端口开放15000-15200 如果需要调整的请在frps.ini和docker端口中同时调整
只适用于x64,不适用于arm
修改配置文件
nano /opt/docker-data/frps/conf/frps.toml配置文件 (frps.toml) 服务端
# [common] is integral section [common] # A literal address or host name for IPv6 must be enclosed # in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" bind_addr = 0.0.0.0 bind_port = 7000 # udp port to help make udp hole to penetrate nat bind_udp_port = 7001 # udp port used for kcp protocol, it can be same with 'bind_port' # if not set, kcp is disabled in frps kcp_bind_port = 7000 # specify which address proxy will listen for, default value is same with bind_addr # proxy_bind_addr = 127.0.0.1 # if you want to support virtual host, you must set the http port for listening (optional) # Note: http port and https port can be same with bind_port vhost_http_port = 80 vhost_https_port = 443 # set dashboard_addr and dashboard_port to view dashboard of frps # dashboard_addr's default value is same with bind_addr # dashboard is available only if dashboard_port is set dashboard_addr = 0.0.0.0 dashboard_port = 7500 # dashboard user and passwd for basic auth protect, if not set, both default value is admin dashboard_user = dream dashboard_pwd = dream # dashboard assets directory(only for debug mode) # assets_dir = ./static # console or real logFile path like ./frps.log log_file = /opt/docker-data/frps/log/frps.log # trace, debug, info, warn, error log_level = info log_max_days = 3 # auth token token = 666666 # heartbeat configure, it's not recommended to modify the default value # the default value of heartbeat_timeout is 90 # heartbeat_timeout = 90 # only allow frpc to bind ports you list, if you set nothing, there won't be any limit # allow_ports = 10000-20000 allow_ports = 15000-15200 # pool_count in each proxy will change to max_pool_count if they exceed the maximum value max_pool_count = 5 # max ports can be used for each client, default value is 0 means no limit max_ports_per_client = 0 # authentication_timeout means the timeout interval (seconds) when the frpc connects frps # if authentication_timeout is zero, the time is not verified, default is 900s authentication_timeout = 900 # if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file # when subdomain is test, the host used by routing is test.frps.com # subdomain_host = frps.imgki.com # if tcp stream multiplexing is used, default is true tcp_mux = true启动镜像
docker run -d \ --name frps \ -v /opt/docker-data/frps/conf/frps.toml:/frp/frps.toml \ -p 15000-15200:15000-15200 \ -p 7000:7000 \ -p 7500:7500 \ -p 7001:7001 \ -p 10080:80 \ -p 8443:443 \ stilleshan/frps启动镜像(docker-compose方式)
git clone https://github.com/ruinny/frps-in-docker.git cd frps-in-docker docker-compose up -dservices: frps: image: stilleshan/frps restart: always container_name: frps ports: - '7000:7000' - '7500:7500' - '7001:7001' - '10080:80' - '8443:443' - '15000-15200:15000-15200' volumes: - '/opt/docker-data/frps/conf/frps.toml:/frp/frps.toml'访问面板
http://server:7500/
客户端
拉取镜像
# x86_64 arm_64 docker pull stilleshan/frpc # arm_64 docker pull snowdreamtech/frpc添加配置目录
mkdir -p /opt/docker-data/frpc cd /opt/docker-data/frpc vim frpc.toml配置文件 (frpc.toml) 客户端
[common] server_addr = 124.222.109.240 server_port = 7000 token = 666666 [ssh] type = tcp local_ip = 192.168.1.101 local_port = 22 remote_port = 15050 [1panl] type = tcp local_ip = 192.168.1.101 local_port = 8888 remote_port = 15051 # 配置域名 custom_domains = vue.dreamrise.giize.com启动容器镜像
docker run -d \ --name frpc --restart=always \ --network host \ -v /opt/docker-data/frpc/frpc.toml:/frp/frpc.toml \ stilleshan/frpc编排
services: frpc: image: stilleshan/frpc container_name: frpc network_mode: host restart: always volumes: - '/opt/docker-data/frpc/frpc.toml:/frp/frpc.toml'本地基本配置示例
[common] server_addr = 124.222.109.240 server_port = 7000 token = 666666 [ssh] type = tcp local_ip = 192.168.1.101 local_port = 22 remote_port = 15050 [1panl] type = tcp local_ip = 192.168.1.101 local_port = 8888 remote_port = 15051 [mysql] type = tcp local_ip = 192.168.1.101 local_port = 3306 remote_port = 15052 [redis] type = tcp local_ip = 192.168.1.101 local_port = 6379 remote_port = 15053 [minio-panel] type = tcp local_ip = 192.168.1.101 local_port = 9001 remote_port = 15054 [minio-server] type = tcp local_ip = 192.168.1.101 local_port = 9002 remote_port = 15055 [gogs-panel] type = tcp local_ip = 192.168.1.101 local_port = 13000 remote_port = 15056 [gogs-server] type = tcp local_ip = 192.168.1.101 local_port = 10022 remote_port = 15057 [qinglong] type = tcp local_ip = 192.168.1.101 local_port = 5700 remote_port = 15060
X-ui
创建数据目录
mkdir -p /opt/docker-data/x-ui/db mkdir -p /opt/docker-data/x-ui/cert启动容器
docker run -itd \ --name x-ui --restart=unless-stopped \ --network=host \ -v /opt/docker-data/x-ui/db/:/etc/x-ui/ \ -v /opt/docker-data/x-ui/cert/:/root/cert/ \ enwaiax/x-ui:latest容器编排
services: x-ui: image: enwaiax/x-ui:latest container_name: x-ui restart: unless-stopped network_mode: host volumes: - /opt/docker-data/x-ui/db/:/etc/x-ui/ - /opt/docker-data/x-ui/cert/:/root/cert/默认端口 54321
默认用户名密码 admin
Halo
容器编排
services: halo: container_name: halo image: registry.fit2cloud.com/halo/halo:2.20 restart: on-failure:3 networks: halo_network: volumes: - /opt/docker-data/halo:/root/.halo2 ports: - "8090:8090" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"] interval: 30s timeout: 5s retries: 5 start_period: 30s environment: # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数 - JVM_OPTS=-Xmx512m -Xms256m command: - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo - --spring.r2dbc.username=root # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。 - --spring.r2dbc.password=123456 - --spring.sql.init.platform=mysql # 外部访问地址,请根据实际需要修改 - --halo.external-url=http://localhost:8090/ networks: halo_network:
微力同步
容器编排
services:
verysync:
image: jonnyan404/verysync
container_name: verysync
restart: always
volumes:
- /opt/docker-data/verysync/data:/data
ports:
- "8886:8886"
- "3000:3000"
- "22037:22037/udp"
- "22027:22027/udp"
environment:
- PORT=8886