Docker部署腳本

Docker

  • 安裝方式
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install -y docker-ce
  • 配置 /etc/docker

    • 增加daemon.json 修改/var/lib/docker 修改為 /data/docker
    {
        "graph": "/data/docker"
    }
    
  • 命令

    • 啟動(dòng)sudo systemctl start docker
    • 重啟sudo systemctl restart docker
    • 停止sudo systemctl stop docker

安裝Portainer

  • 位置/data/portainer
  • 創(chuàng)建腳本touch run.sh
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

下面的docker-compose.yml 都是放在portainer中

Traefik

  • 位置/data/traefik

  • 創(chuàng)建文件 traefik.tomltouch acme.json

    • 證書acme.json
    • 配置traefik.toml 獲取基礎(chǔ)配置wget https://raw.githubusercontent.com/containous/traefik/master/traefik.sample.toml
    • 設(shè)置權(quán)限chmod 600 acme.json
  • traefik.toml 增加配置

# 自動(dòng)簽發(fā)證書并且自動(dòng)續(xù)期    
[certificatesResolvers.le.acme]
  email = "郵件@email.com"
  storage = "acme.json"
  [certificatesResolvers.le.acme.tlsChallenge]
  • docker-compose.yml
version: '2'

services:
  reverse-proxy:
    image: traefik:v2.2
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
    environment:
        TZ: Asia/Shanghai
    volumes:
      - /data/traefik/traefik.toml:/etc/traefik/traefik.toml
      - /data/traefik/acme.json:/acme.json
      - /data/traefik/log:/log
      - /var/run/docker.sock:/var/run/docker.sock
  • 使用 在服務(wù)添加代碼
  服務(wù):
    networks:
          - default
    labels:
          - traefik.http.routers.whoami.rule=Host(`域名`)
          - traefik.http.routers.whoami.tls=true
          - traefik.http.routers.whoami.tls.certresolver=le
使用traefik_default網(wǎng)絡(luò)
networks:
  default:
    external:
      name: traefik_default

Rocketmq 雙Master

  • 方式https://github.com/foxiswho/docker-rocketmq
  • 位置/data/rocketmq
  • 創(chuàng)建目錄
# 創(chuàng)建目錄
mkdir -p ./rmqs/logs
mkdir -p ./rmqs/store
mkdir -p ./rmq/logs
mkdir -p ./rmq/store
mkdir -p ./rmq/brokerconf
  • 配置文件 在rmq/brokerconf創(chuàng)建文件broker.confplain_acl.ym

  • 設(shè)置權(quán)限

# 設(shè)置目錄權(quán)限
chmod -R 777 ./rmqs/logs
chmod -R 777 ./rmqs/store
chmod -R 777 ./rmq/logs
chmod -R 777 ./rmq/store
chmod -R 777 ./rmq/brokerconf
  • 配置文件 ACL plain_acl.yml
accounts:
    - accessKey: 賬戶
      secretKey: 密碼
      admin: true
  • 配置文件broker.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.


#所屬集群名字
brokerClusterName=DefaultCluster

#broker名字慈鸠,注意此處不同的配置文件填寫的不一樣蓝谨,如果在broker-a.properties使用:broker-a,
#在broker-b.properties使用:broker-b
# ip1 broker-a
# ip2 broker-b
brokerName=broker-b

#0 表示Master,>0 表示Slave
brokerId=0

#nameServer地址
namesrvAddr=ip1:9876;ip2:9876
#namesrvAddr=rmqnamesrv:9876

#啟動(dòng)IP,如果 docker 報(bào) com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解決方式1 加上一句producer.setVipChannelEnabled(false);,解決方式2 brokerIP1 設(shè)置宿主機(jī)IP碧囊,不要使用docker 內(nèi)部IP
# 公網(wǎng)ip
brokerIP1=ip

#在發(fā)送消息時(shí)漫贞,自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4

#是否允許 Broker 自動(dòng)創(chuàng)建Topic芦昔,建議線下開啟,線上關(guān)閉 M拗住9径小!這里仔細(xì)看是false料扰,false凭豪,false
#原因下篇博客見~ 哈哈哈哈
autoCreateTopicEnable=true

#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟晒杈,線上關(guān)閉
autoCreateSubscriptionGroup=true

#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911

#刪除文件時(shí)間點(diǎn)嫂伞,默認(rèn)凌晨4點(diǎn)
deleteWhen=04

#文件保留時(shí)間,默認(rèn)48小時(shí)
fileReservedTime=120

#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824

#ConsumeQueue每個(gè)文件默認(rèn)存30W條拯钻,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
#storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
#commitLog 存儲(chǔ)路徑
#storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)
#storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
#消息索引存儲(chǔ)路徑
#storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
#checkpoint 文件存儲(chǔ)路徑
#storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
#abort 文件存儲(chǔ)路徑
#abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
#限制的消息大小
maxMessageSize=65536

#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER

#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
# 開啟認(rèn)證
aclEnable=true
  • docker-compose.yml
version: '2'
services:
  rmqnamesrv:
    image: foxiswho/rocketmq:4.8.0
    container_name: rmqnamesrv
    restart: always
    ports:
      - 9876:9876
    volumes:
      - /data/rocketmq/rmqs/logs:/home/rocketmq/logs
      - /data/rocketmq/rmqs/store:/home/rocketmq/store
    environment:
      JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m"
      TZ: Asia/Shanghai
    command: ["sh","mqnamesrv"]
    networks:
        rmq:
          aliases:
            - rmqnamesrv
  rmqbroker:
    image: foxiswho/rocketmq:4.8.0
    container_name: rmqbroker
    restart: always
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - /data/rocketmq/rmq/logs:/home/rocketmq/logs
      - /data/rocketmq/rmq/store:/home/rocketmq/store
      - /data/rocketmq/rmq/brokerconf/broker.conf:/etc/rocketmq/broker.conf
      - /data/rocketmq/rmq/brokerconf/plain_acl.yml:/home/rocketmq/rocketmq-4.8.0/conf/plain_acl.yml
    environment:
        JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128m"
        TZ: Asia/Shanghai
    command: ["sh","mqbroker","-c","/etc/rocketmq/broker.conf","autoCreateTopicEnable=true"]
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqbroker
networks:
  rmq:
    name: rmq
    driver: bridge

Redis

  • 位置/data/redis
  • 創(chuàng)建文件夾configredis_data
  • redis.conf
bind 0.0.0.0
requirepass 密碼
  • docker-compose.yml
version: '2'
services:
  redis:
    image: redis:6.2.4
    container_name: redis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - /data/redis/config/redis.conf:/usr/local/etc/redis/redis.conf
      - /data/redis/redis_data:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    environment:
      TZ: Asia/Shanghai

Emqx

  • 位置/data/emqx

  • 當(dāng) EMQ X 成功運(yùn)行在你的本地計(jì)算機(jī)上且 EMQ X Dashboard 被默認(rèn)啟用時(shí)帖努,你可以訪問 http://localhost:18083 來查看你的 Dashboard,默認(rèn)用戶名是 admin粪般,密碼是 public

  • 修改admin密碼123456

  • 開啟Mnesia認(rèn)證 插件emqx_auth_mnesia

    • 接口文檔https://docs.emqx.cn/broker/v4.3/advanced/auth.html
    • 接口POST /api/v4/auth_username?username=test&password=test 添加賬戶密碼
    • 橋接客戶端賬戶密碼mqttbridging/mqttbridging
    • 現(xiàn)場(chǎng)客戶端line/line
  • 插件關(guān)閉遙測(cè) 插件emqx_telemetry

  • 關(guān)閉匿名登陸

    • 配置文件emqx.conf 關(guān)閉匿名登陸 allow_anonymous = false
    • 重啟./bin/emqx restart
  • 服務(wù)器使用方式一安裝

安裝方式一

  • 下載wget https://www.emqx.com/zh/downloads/broker/4.3.5/emqx-centos8-4.3.5-amd64.zip
  • 安裝unzip emqx-centos8-4.3.5-amd64.zip
  • 運(yùn)行./bin/emqx start

安裝方式二

  • 創(chuàng)建目錄
mkdir -p ./data/configs
mkdir -p ./data/mnesia
  • 設(shè)置權(quán)限
chmod -R 777 ./data/configs
chmod -R 777 ./data/mnesia
  • docker-compose.yml
version: '2'
services:
  postgresql:
    image: emqx/emqx:4.3.5
    container_name: emqx
    restart: always
    environment:
      TZ: Asia/Shanghai
    ports:
      - 1883:1883
      - 8081:8081
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083
  • 不要?jiǎng)h除emqx的volumes

Docker私有倉(cāng)庫(kù)

  • 位置/data/docker-registry

  • htpasswd工具 yum -y install httpd

  • 賬戶密碼

    • admin
    • 密碼
    • 生成腳本htpasswd -Bbn admin 密碼 > auth/passwd
  • 使用倉(cāng)庫(kù) 配置daemon.json

"insecure-registries": [
          "[ip:5000]"
        ]
  • docker-compose.yml
version: '2'
services:
  registry:
    image: registry:2
    container_name: docker-registry
    volumes:
      - /data/docker-registry:/var/lib/registry
      - /data/docker-registry/auth:/auth
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
    restart: always
    privileged: true
    ports:
      - "5000:5000"
    networks:
      - default
    labels:
      - traefik.http.routers.registry-ui.rule=Host(`docker.registry.域名.com`)
      - traefik.http.routers.registry-ui.tls=true
      - traefik.http.routers.registry-ui.tls.certresolver=le
  registry-ui:
    image: konradkleine/docker-registry-frontend:v2
    container_name: docker-registry-ui
    restart: always
    privileged: true
    environment:
      - ENV_DOCKER_REGISTRY_HOST=registry
      - ENV_DOCKER_REGISTRY_PORT=5000
    ports:
      - "5080:80"
    networks:
      - default
    links:
      - registry:registry
networks:
  default:
    external:
      name: traefik_default
  • 推送到倉(cāng)庫(kù)
    • 登陸 docker login https://docker.registry.域名.com
    • 打包鏡像docker build . --tag docker.registry.域名.com/組/鏡像名:1.0.0
    • push docker push docker.registry.域名.com/組/鏡像名:1.0.0

nacos

  • 位置/data/nacos/

  • 源碼位置/data/nacos/git/nacos-docker-master

    • 倉(cāng)庫(kù)地址https://github.com/nacos-group/nacos-docker
  • 啟動(dòng)方式cluster-ip.yaml 集群

  • nacosmysql不對(duì)外開放 3306端口不開放 只供nacos使用

  • nacosmysql不對(duì)外開放 3306端口不開放 只供nacos使用

  • nacosmysql不對(duì)外開放 3306端口不開放 只供nacos使用

  • 通用

    • 賬戶nacos 密碼密碼
  • docker-compose.yml

version: "2"
services:
  nacos1:
    image: nacos/nacos-server:2.0.2
    container_name: nacos1
    networks:
      nacos_net:
        ipv4_address: 172.16.238.10
    volumes:
      - /data/nacos/cluster-logs/nacos1:/home/nacos/logs
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    environment:
      - NACOS_SERVERS=172.16.238.10:8848 172.16.238.11:8848 172.16.238.12:8848
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=密碼
    restart: on-failure
    depends_on:
      - mysql

  nacos2:
    image: nacos/nacos-server:2.0.2
    container_name: nacos2
    networks:
      nacos_net:
        ipv4_address: 172.16.238.11
    volumes:
      - /data/nacos/cluster-logs/nacos2:/home/nacos/logs
    ports:
      - "8849:8848"
      - "9849:9848"
    environment:
      - NACOS_SERVERS=172.16.238.10:8848 172.16.238.11:8848 172.16.238.12:8848
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=密碼
    restart: always
    depends_on:
      - mysql
  nacos3:
    image: nacos/nacos-server:2.0.2
    container_name: nacos3
    networks:
      nacos_net:
        ipv4_address: 172.16.238.12
    volumes:
      - /data/nacos/cluster-logs/nacos3:/home/nacos/logs
    ports:
      - "8850:8848"
      - "9850:9848"
    environment:
      - NACOS_SERVERS=172.16.238.10:8848 172.16.238.11:8848 172.16.238.12:8848
      - MYSQL_SERVICE_HOST=mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=密碼
    restart: always
    depends_on:
      - mysql
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    restart: always
    networks:
      nacos_net:
        ipv4_address: 172.16.238.13
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=nacos
      - MYSQL_USER=nacos
      - MYSQL_PASSWORD=密碼
    volumes:
      - /data/nacos/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
networks:
  nacos_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拼余,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亩歹,更是在濱河造成了極大的恐慌匙监,老刑警劉巖凡橱,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異舅柜,居然都是意外死亡梭纹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門致份,熙熙樓的掌柜王于貴愁眉苦臉地迎上來变抽,“玉大人,你說我怎么就攤上這事氮块∩茉兀” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵滔蝉,是天一觀的道長(zhǎng)击儡。 經(jīng)常有香客問我,道長(zhǎng)蝠引,這世上最難降的妖魔是什么阳谍? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮螃概,結(jié)果婚禮上矫夯,老公的妹妹穿的比我還像新娘。我一直安慰自己吊洼,他們只是感情好训貌,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冒窍,像睡著了一般递沪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上综液,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天款慨,我揣著相機(jī)與錄音,去河邊找鬼意乓。 笑死樱调,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的届良。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼圣猎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼士葫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起送悔,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤慢显,失蹤者是張志新(化名)和其女友劉穎爪模,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荚藻,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屋灌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了应狱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片共郭。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疾呻,靈堂內(nèi)的尸體忽然破棺而出除嘹,到底是詐尸還是另有隱情,我是刑警寧澤岸蜗,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布尉咕,位于F島的核電站,受9級(jí)特大地震影響璃岳,放射性物質(zhì)發(fā)生泄漏年缎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一铃慷、第九天 我趴在偏房一處隱蔽的房頂上張望单芜。 院中可真熱鬧,春花似錦枚冗、人聲如沸缓溅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坛怪。三九已至,卻和暖如春股囊,著一層夾襖步出監(jiān)牢的瞬間袜匿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工稚疹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留居灯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓内狗,卻偏偏與公主長(zhǎng)得像怪嫌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柳沙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容