docker-compose部署基础服务-且容器时间保持一致

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,redisnginxes6.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或微信视频号 上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维实战课程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值