docker-compose 安装常用服务
1.下载,安装dockercompose,建议手动下载国内镜像地址1)将dockercompose 移到 /usr/local/bin 下chmod 755 docker-composemv docker-compose /usr/local/bin2)验证docker-compose -v2.在/opt 目录下新建各个组件的文件夹用于挂载文件3.正式编排服务3.1.mysql1)建立conf,d
1.下载,安装docker,dockercompose,建议手动下载
docker安装教程
快捷安装脚本:
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
1)将dockercompose 移到 /usr/local/bin 下
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2)验证
docker-compose -v
3)设置国内镜像
sudo vi /etc/docker/daemon.json
daemon.json:
以下配置镜像并非本人的,懒得注册网上找的。
{
"registry-mirrors": ["https://m30jn00e.mirror.aliyuncs.com"]
}
然后使用systemctl restart docker命令重启Docker即可
docker info 查看是否修改成功
2.在/opt 目录下新建各个组件的文件夹用于挂载文件
3.正式编排服务
3.1.mysql
1)建立conf,data文件夹
2).docker-compose.yml 文件
version: '3.1'
services:
mysql:
image: mysql:5.7
container_name: mysql
privileged: true #一定要设置为true,不然数据卷可能挂载不了,启动不起
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 密码 # 自己配置数据库密码
TZ: Asia/Shanghai
command:
--lower_case_table_names=1
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
volumes:
- /opt/mysql/data:/var/lib/mysql
-/opt/mysql/conf/my.cnf:/etc/mysql/my.cnf
restart: always
3).在conf 下建立 my.cnf
[mysqld]
user=mysql
log-bin=mysql-bin # 开启Binlog
default-storage-engine=INNODB
default-time_zone = '+8:00'
sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
4)cd到存放docker-compose.yml的文件夹下运行下面命令
docker-compose up -d
3.2 .redis
1)创立如下目录
2)docker-compose.yml
version: '2'
services:
redis:
image: redis:5.0
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- /opt/redis/data:/data
- /opt/redis/conf/redis.conf:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf
3)redis.conf:
redis.conf 详细配置
# 绑定的IP 注释表示任何ip都能访问
#bind 0.0.0.0
# 保护模式 no:关闭 外网可以直接访问redis yes:开启保护模式,开启的情况下,只能通过绑定的ip[bind 127.0.0.1]或者密码验证访问
protected-mode no
# 启动的端口号
port 6379
################################# GENERAL #####################################
# 设置运行方式 默认值:no,需要改为yes,以守护进程的方式运行,docker 运行一定要改为no不然一直会restart
daemonize no
# 配置文件的pid文件,如果以后台方式运行,就需要指定一个pid文件
pidfile /var/run/redis_6379.pid
# 日志级别设置
# 指定日志记录级别
# # Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
# # debug 记录很多信息,用于开发和测试
# # varbose 有用的信息,不像debug会记录那么多
# # notice 普通的verbose,常用于生产环境
# # warning 只有非常重要或者严重的信息会记录到日志
loglevel notice
# 日志文件位置名
logfile ''
# redis数据库个数
databases 16
################################ SNAPSHOTTING ################################
# 持久化保存策略配置
# 在900s内,如果至少有1个key进行了修改,就进行持久化操作
save 900 1
# 在300s内,如果至少有10个key进行了修改,就进行持久化操作
save 300 10
# 在60s内,如果至少有10000个key进行了修改,就进行持久化操作
save 60 10000
# 如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes
# 存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes
rdbcompression yes
# 导入时是否检查
rdbchecksum yes
# 默认持久化保存后的文件名
dbfilename dump.rdb
# rdb文件保存的目录
dir ./
#ECURITY ###################################
# 设置访问、登录的密码,设置requirepass 您的密码
requirepass jxhyroot
############################## APPEND ONLY MODE ###############################
# 是否开启aof持久化模式,默认值:no,不开启。redis的默认持久化策略是edb模式
appendonly yes
# 持久化文件名称
appendfilename "appendonly.aof"
# 持久化策略设置
# appendfsync always # 每次修改都进行持久化操作
# 每秒执行一次持久化操作
appendfsync everysec
# appendfsync no # 不执行持久化操作,相当于未开启aof持久化策略
# 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes
no-appendfsync-on-rewrite no
# AOF自动重写配置,默认值为100
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# Redis在以AOF方式恢复数据时,对最后一条可能出问题的指令的处理方式,默认值yes
aof-load-truncated yes
# 当重写AOF文件时,Redis能够在AOF文件中使用RDB前导码,以便更快地重写和恢复,启用此选项时,重写的AOF文件由两个不同的节组成:#[RDB file][AOF tail],当加载AOF文件时,Redis通过以 “REDIS” 字符串开头的AOF文件识别出此文件是由RDB和AOF组合而成的,Redis
#先加载RDB部分,然后再加载AOF部分,默认值yes
aof-use-rdb-preamble yes
4)运行同mysql
3.3. es
es不能使用root用户运行
#1--创建elasticsearch用户
useradd elasticsearch;
#2--赋予用户目录权限
chown -R elasticsearch:elasticsearch elasticsearch-6.8.6;
#3--切换至elasticsearch用户
su elasticsearch
#4修改最大文件打开数,不然es可能不能运行
vim /etc/security/limits.conf
#在limits.conf添加以下两行,elasticsearch 表示用户
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
#5验证
ulimit -H -n
#6vim /etc/sysctl.conf 添加
vm.max_map_count=262144
#7立即生效
/sbin/sysctl -p
1)建立如下目录
2)
version: '3'
services:
# search engine
elasticsearch:
image: elasticsearch:7.7.0
container_name: elasticsearch
environment:
- "discovery.type=single-node"
- http.port=9200
- http.cors.enabled=true
- http.cors.allow-origin=*
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- /opt/es/data:/usr/share/elasticsearch/data
- /opt/es/plugins:/usr/share/elasticsearch/plugins
- /opt/es/logs/:/user/share/elasticsearch/logs
- /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
restart: always
ports:
- 9200:9200
- 9300:9300
# elasticsearch browser
dejavu:
image: appbaseio/dejavu:3.2.3
container_name: dejavu
restart: always
ports:
- 1358:1358
links:
- elasticsearch
4)配置文件
elasticsearch.yml
http.host: 0.0.0.0
5)启动同上
3.4.rabbitmq
1)建立如下目录
rabbitmq 宿主机上的log目录需要 chmod 777 - R log
赋权,data目录不要额外赋权容易出现问题。
2)docker-compose.yml
myplugins 用于延迟队列插件在容器重新构建后不丢失。
rabbitmq:
container_name: rabbitmq
image: rabbitmq:3.9-management
ports:
- 15672:15672 #客户端连接端口映射
- 5672:5672
restart: always
privileged: true
volumes:
- ./rabbitmq/log/:/var/log/rabbitmq/
- ./rabbitmq/data/:/var/lib/rabbitmq #数据卷映射
- ./rabbitmq/plugins:/myplugins
environment:
# 指定自定义插件目录
RABBITMQ_PLUGINS_DIR: '/plugins:/myplugins'
RABBITMQ_DEFAULT_USER: root
RABBITMQ_DEFAULT_PASS: root
docker-compose up 运行起来即可在网页 ip:15672 中访问rabbitmq后台了。
账号 RABBITMQ_DEFAULT_USER 配置的值
密码 RABBITMQ_DEFAULT_PASS 配置的值
4)下载对应版本的延时队列插件 rabbitmq_delayed_message_exchange
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
放入**./rabbitmq/plugins**目录下
5)进入容器
docker exec -it rabbitmq /bin/bash
6)启动插件
#启动插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
3)启动同上
3.5.consul
1)docker-compose.yml
version: '2.0'
services:
consul:
image: consul:1.6.1
container_name: 'consul'
ports:
- 8500:8500 #换成其他端口外网无法访问,具体原因未知
restart: always
volumes:
- /opt/consul/data:/consul/data
command: agent -server -ui -datacenter=dc -domain=ci -bootstrap -client=0.0.0.0
2)启动同上
3.6:nginx
docker-compose:
version: '2'
services:
nginx:
container_name: nginx
image: nginx
restart: always
ports:
- 80:80
- 90:90
volumes:
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /data/nginx/conf.d:/etc/nginx/conf.d
- /data/nginx/html/dist:/usr/share/nginx/html
- /data/nginx/logs:/data/logs/nginx
environment:
- TZ=Asia/Shanghai
conf文件夹下的nginx.conf
user nginx;
worker_processes 2;
error_log /data/logs/nginx/error/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format logstash_json '{'
'"@timestamp":"$time_iso8601",'
'"remote_addr":"$remote_addr",'
'"ip":"$http_x_forwarded_for",'
'"remote_user":"$remote_user",'
'"request_method":"$request_method",'
'"http_referer":"$http_referer",'
'"request":"$request_uri",'
'"body_bytes_sent":"$body_bytes_sent",'
'"status":"$status",'
'"request_time":"$request_time",'
'"http_user_agent":"$http_user_agent"'
'}';
access_log /data/logs/nginx/access.log logstash_json;
client_max_body_size 60M;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_buffers 4 16k;
gzip_min_length 2k;
gzip_comp_level 5;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
server {
listen 80;
server_name ip;
keepalive_timeout 600;
root /usr/share/nginx/html/draw;
location / {
index index.html;
try_files $uri $uri/ /index.html;
}
location /drawBatchInfo/ {
proxy_pass http://ip:8080/drawBatchInfo/;
}
location /drawDetails/ {
proxy_pass http://ip:8080/drawDetails/;
}
location /enterpriseWechatOperate/ {
proxy_pass http://ip:8080/enterpriseWechatOperate/;
}
}
//server 内容如果很多可以分模块放在单独的conf中用 include /etc/nginx/conf.d/*.conf 引入
server {
listen 90;
server_name ip;
keepalive_timeout 600;
rootusr/share/nginx/html/draw-backend;
location / {
auth_basic "please input manager name and password";
auth_basic_user_file /home/nginxpasswd.db;
index index.html;
try_files $uri $uri/ /index.html;
}
location /drawBatchInfo/ {
proxy_pass http://ip2:8080/drawBatchInfo/;
}
location /drawDetails/ {
proxy_pass http://ip2:8080/drawDetails/;
}
}
}
我们在安装nginx时经常会遇到配置不对或者修改doocker-compose文件的情况,这时需要更新镜像。
1.停止容器 docker-compose stop nginx
2.编译镜像启动容器 docker-compose up --build -d nginx
3.8 安装minio
minio:
image: minio/minio
container_name: minio
restart: always
ports:
#暴露API接口
- 9000:9000
#暴露Web接口控制台端口
- 9001:9001
command: minio server /data --console-address ":9001"
environment:
MINIO_ACCESS_KEY: wikiminio #管理后台用户名
MINIO_SECRET_KEY: jxhyroot #管理后台密码,最小8个字符
volumes:
- /data/wiki/minio:/data #映射当前目录下的data目录至容器内/data目录
- ./minio/config:/root/.minio/ #映射配置目录
更多推荐
所有评论(0)