docker-compose部署基础服务-且容器时间保持一致
如果对运维课程感兴趣,可以在b站上、csdn或微信视频号 上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频
机器:192.168.130.98
1.安装docker
# docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.2
2.基础服务部署:(含docker-compose安装)
基础服务有:mysql,redis,nginx,es6.7.1,es6.7.1-head,mongo,rabbitmq,fdfs(storage,tracker)
将基础服务包上传到服务器的/home目录并解压到/data目录
# cd /data/
# ls docker-compose.tar.gz
docker-compose.tar.gz
# tar -zxf docker-compose.tar.gz
# cd docker-compose/
# ls
conf images yaml_base
# cd yaml_base/
# ls
base_init.sh docker-compose.yaml init.bak
# cat base_init.sh
#!/bin/bash
#2019-12-19
images=/data/docker-compose/images
conf=/data/docker-compose/conf
#使用脚本前先需要修改基础服务ip: BASE_IP:一个是storage服务需要连接tracker的ip,一个是es-head需要连接es的ip (两个公用为BASE_IP)
BASE_IP=192.168.130.98 #需要根据实际情况修改成基础服务的ip
docker load -i $images/nginx1.15.9-0711.tar
mkdir -p /data/nginx/conf/
mkdir -p /data/nginx/logs
mkdir -p /data/nginx/registry
mkdir -p /data/nginx/users
mkdir -p /data/nginx/ssl
cp $conf/nginx.conf /data/nginx/conf
cp $conf/server.crt /data/nginx/ssl/
cp $conf/server.key /data/nginx/ssl/
docker load -i $images/mysql5.7.27.tar
mkdir -p /data/mysql/conf
mkdir -p /data/mysql/data
mkdir -p /data/mysql/bak
cp $conf/my.cnf /data/mysql/conf/
docker load -i $images/redis4.0.10.tar
mkdir -p /data/redis/conf/
mkdir -p /data/redis/data
mkdir -p /data/redis/logs
cp $conf/redis.conf /data/redis/conf
docker load -i $images/mongo.tar
mkdir -p /data/mongodb_docker/db
docker load -i $images/rabbitmq3.8.tar
mkdir -p /data/rabbitmq/conf
mkdir -p /data/rabbitmq/data
cp $conf/rabbitmq.conf /data/rabbitmq/conf
docker load -i $images/fastdfs.tar
mkdir -p /data/fastdfs/data/tracker_data/data
mkdir -p /data/fastdfs/etc
mkdir -p /data/fastdfs/data/storage_data/data
mkdir -p /data/fastdfs/data/store_path
#下面只有storage.conf有用:
cp $conf/client.conf /data/fastdfs/etc/client.conf
cp $conf/storage.conf /data/fastdfs/etc/storage.conf
cp $conf/tracker.conf /data/fastdfs/etc/tracker.conf
# storage服务需要连接tracker的ip: 注意下面要要用双引号,单引号不能识别变量的值
sed -i "s/tracker_server=127.0.0.1:22122/tracker_server=${BASE_IP}:22122/g" /data/docker-compose/conf/storage.conf
sed -i "s/tracker_server=127.0.0.1:22122/tracker_server=${BASE_IP}:22122/g" /data/fastdfs/etc/storage.conf
docker load -i $images/elasticsearch_6.7.1.tar
mkdir /data/es-6.7.1/config/ -p
mkdir /data/es6.7.1_data
mkdir /data/es6.7.1_logs
mkdir /data/es6.7.1_plugins
chmod -R 777 /data/es6.7.1_data /data/es6.7.1_logs /data/es6.7.1_plugins
cp $conf/es.yml /data/es-6.7.1/config/es.yml
docker load -i $images/elasticsearch-head_6.7.1.tar
mkdir /data/es-6.7.1-head/conf/ -p
#配置文件vendor.js——不用修改:
cp $conf/vendor.js /data/es-6.7.1-head/conf/vendor.js
#配置文件Gruntfile.js——不用修改: 里面有监听所有机器和端口9100配置-已添加好(hostname: '*', port: 9100)
cp $conf/Gruntfile.js /data/es-6.7.1-head/conf/Gruntfile.js
#配置文件app.js, 需要修改成本机监听的ip和端口:(默认: app-base_uri") || "http://127.0.0.1:9200")
cp $conf/app.js /data/es-6.7.1-head/conf/app.js
#es-head需要连接es的ip: 注意下面要要用双引号,单引号不能识别变量的值
sed -i "s/127.0.0.1:9200/${BASE_IP}:9200/g" /data/es-6.7.1-head/conf/app.js
cp $images/docker-compose /usr/bin/
chmod 755 /usr/bin/docker-compose
# sh base_init.sh
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq management 36ed80b6a1b1 14 months ago 180 MB
docker.io/mysql 5.7.27 383867b75fd2 16 months ago 373 MB
mongo latest ad90ce14b74e 19 months ago 411 MB
elasticsearch 6.7.1 e2667f5db289 22 months ago 812 MB
docker.io/nginx 1.15.9 881bd08c0b08 23 months ago 109 MB
gmprd.baiwang-inner.com/redis 4.0.10 f713a14c7f9b 2 years ago 425 MB
elasticsearch-head 6.7.1 b19a5c98e43b 4 years ago 824 MB
season/fastdfs latest c6cc94c34f8e 5 years ago 205 MB
# cat docker-compose.yaml
version: '3.3' # compose-file的语法版本
#使用脚本前,先需要修改storage服务中连接tracker服务的ip: storage: TRACKER_IP: 192.168.130.98:22122
services: # 定义服务
nginx:
image: docker.io/nginx:1.15.9
ports:
- "80:80"
- "443:443"
container_name: nginx
restart: always
network_mode: "host"
volumes:
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:rw
- /data/nginx/logs:/etc/nginx/logs:rw
- /data/nginx/registry:/etc/nginx/registry:rw
- /data/nginx/users:/etc/nginx/users:rw
- /data/nginx/ssl:/data/ssl:rw
- /etc/localtime:/etc/localtime:rw
mysql:
image: docker.io/mysql:5.7.27
ports:
- "3306:3306"
container_name: mysql
restart: always
network_mode: "host"
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: Gm02_prd8!
volumes:
- /data/mysql/conf/my.cnf:/etc/my.cnf:rw
- /data/mysql/data:/var/lib/mysql:rw
- /data/mysql/bak:/data/bak:rw
- /etc/localtime:/etc/localtime:rw
#- ./init:/docker-entrypoint-initdb.d/
redis:
image: gmprd.baiwang-inner.com/redis:4.0.10
ports:
- "6379:6379"
container_name: redis
restart: always
network_mode: "host"
volumes:
- /data/redis/conf/redis.conf:/opt/redis/conf/redis.conf:rw
- /data/redis/data:/opt/redis/data:rw
- /data/redis/logs:/opt/redis/logs:rw
- /etc/localtime:/etc/localtime:rw
mongo:
image: mongo
ports:
- "27017:27017"
container_name: mongo
restart: always
network_mode: "host"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin123
volumes:
- /data/mongodb_docker/db:/data/db:rw
- /etc/localtime:/etc/localtime:rw
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672"
- "15672:15672"
- "25672:25672"
container_name: rabbitmq
restart: always
network_mode: "host"
volumes:
- /data/rabbitmq/conf/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:rw
- /data/rabbitmq/data:/var/lib/rabbitmq:rw
- /etc/localtime:/etc/localtime:rw
tracker:
image: season/fastdfs
ports:
- "22122:22122"
container_name: tracker
privileged: true
restart: always
network_mode: "host"
command: tracker
volumes:
- /data/fastdfs/data/tracker_data/data:/fastdfs/tracker/data:rw
- /data/fastdfs/etc:/fdfs_conf:rw
- /etc/localtime:/etc/localtime:rw
storage:
image: season/fastdfs
ports:
- "23000:23000"
container_name: storage
privileged: true
restart: always
network_mode: "host"
command: storage
environment:
TRACKER_IP: 192.168.130.98:22122 #tracker服务所在服务器ip和端口,修改成服务器A的ip(基础服务的ip)
volumes:
- /data/fastdfs/data/storage_data/data:/fastdfs/storage/data:rw
- /data/fastdfs/data/store_path:/fastdfs/store_path:rw
- /data/fastdfs/etc:/fdfs_conf:rw
- /etc/localtime:/etc/localtime:rw
es-6.7.1:
image: elasticsearch:6.7.1
ports:
- "9200:9200"
- "9300:9300"
container_name: es-6.7.1
restart: always
network_mode: "host"
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- discovery.type=single-node
volumes:
- /data/es-6.7.1/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /data/es6.7.1_data:/usr/share/elasticsearch/data
- /data/es6.7.1_logs:/usr/share/elasticsearch/logs
- /data/es6.7.1_plugins:/usr/share/elasticsearch/plugins
- /etc/localtime:/etc/localtime:rw
es-6.7.1-head:
image: elasticsearch-head:6.7.1
ports:
- "9100:9100"
container_name: es-6.7.1-head
restart: always
network_mode: "host"
volumes:
- /data/es-6.7.1-head/conf/vendor.js:/usr/src/app/_site/vendor.js
- /data/es-6.7.1-head/conf/Gruntfile.js:/usr/src/app/Gruntfile.js
- /data/es-6.7.1-head/conf/app.js:/usr/src/app/_site/app.js
- /etc/localtime:/etc/localtime:rw
# docker-compose up -d
Creating redis ... done
Creating mongo ... done
Creating es-6.7.1-head ... done
Creating nginx ... done
Creating mysql ... done
Creating rabbitmq ... done
Creating tracker ... done
Creating es-6.7.1 ... done
Creating storage ... done
# docker-compose ps
Name Command State Ports
--------------------------------------------------------------
es-6.7.1 /usr/local/bin/docker-entr ... Up
es-6.7.1-head /bin/sh -c grunt server Up
mongo docker-entrypoint.sh mongod Up
mysql docker-entrypoint.sh --def ... Up
nginx nginx -g daemon off; Up
rabbitmq docker-entrypoint.sh rabbi ... Up
redis redis-server /opt/redis/co ... Up
storage /entrypoint.sh storage Up
tracker /entrypoint.sh tracker Up
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cb98b05aa6e season/fastdfs "/entrypoint.sh tr..." About a minute ago Up About a minute tracker
04f4bbcf8b35 season/fastdfs "/entrypoint.sh st..." About a minute ago Up About a minute storage
fb0c46ac2b98 elasticsearch:6.7.1 "/usr/local/bin/do..." About a minute ago Up About a minute es-6.7.1
cd00f956267a rabbitmq:management "docker-entrypoint..." About a minute ago Up About a minute rabbitmq
e5c1d0303036 mongo "docker-entrypoint..." About a minute ago Up About a minute mongo
4fa9d6ec5089 elasticsearch-head:6.7.1 "/bin/sh -c 'grunt..." About a minute ago Up About a minute es-6.7.1-head
2d4e022c81ca docker.io/mysql:5.7.27 "docker-entrypoint..." About a minute ago Up About a minute mysql
11b7c191834b docker.io/nginx:1.15.9 "nginx -g 'daemon ..." About a minute ago Up About a minute nginx
0b112407e900 gmprd.baiwang-inner.com/redis:4.0.10 "redis-server /opt..." About a minute ago Up About a minute redis
3.测试基础服务连接
# docker exec -it mysql mysql -uroot -pGm02_prd8! #测试数据库连接
mysql> show databases;
# docker exec -it redis redis-cli -a GmRes_prd7! #测试redis和mongo连接
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> quit
# docker exec -it mongo mongo -uadmin -padmin123 #测试mongodb连接
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
> quit()
访问rabbitmq管理界面: http://192.168.130.98:15672/
输入默认用户名和密码:guest/guest即可登录rabbitmq
如果对运维课程感兴趣,可以在b站上、csdn或微信视频号 上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频