docker部署文檔(一)

其中oracleredis在第一次部署完成後不再需要大的變動, 工程容器則需要經常升級, nginx容器也需要經常重啓.

注意點:

  1. docker run-v選項是將宿主機目錄掛載到容器中的指定目錄, 這是一個覆蓋的操作.

  2. 掛載的日誌目錄務必放在宿主機的空間較大的分區上, 以免日誌滿而造成服務無法運行. 該文檔中認爲/opt是空間較大的分區.

  3. docker服務會接管宿主機的防火牆, 容器與宿主機的端口映射都是有docker通過iptables完成的, 所以不要再執行關閉或清空防火牆的操作.

1. oracle容器操作

啓動容器

$ docker run -d --privileged  --restart=always \--shm-size 2147483648 \-p 1521:1521 \-v /opt/oracle:/opt/oracle \reg01.sky-mobi.com/huoshu/oracle-final:1.0.3

使用docker-enter進入容器, 執行初始化腳本, 並啓動數據實例

## 執行初始化腳本, 使sysctl配置生效bash /root/init.sh 
## 切換用戶su - oracle## 啓動oracle監聽器lsnrctl  start## 進入sqlplus命令行sqlplus "/as sysdba"SQL> startup
ORACLE instance started.

Total System Global Area 3206836224 bytes
Fixed Size          2217632 bytes
Variable Size         369101152 bytes
Database Buffers     2818572288 bytes
Redo Buffers           16945152 bytes
Database mounted.
Database opened.
SQL>

退出容器, 回到宿主機命令行.

如果oracle容器在獨立的服務器上, 則不需要指定IP, 只需要映射容器的1521端口到宿主機本身的1521端口上即可.

注意:

由於--restart=always啓動參數的存在, 容器異常崩潰時會自動重啓. 其他容器都設置了啓動時自動運行其中的服務的規則, 但是oracle容器沒有這個配置, 所以oracle容器掛掉後依然需要手動進入容器再執行一遍上述操作.

數據存儲目錄需要單獨打包. 啓動時也應把這個目錄掛載出來, 以防容器崩潰時數據丟失.

2. nginx容器操作

2.1 啓動容器

docker run -d --restart=always \
--net huoshu --ip=172.21.0.2 -p 80:80 -p 81:81 \
-v /opt/apps/front:/opt/apps \
-v /opt/apps/front/nginx.conf.d:/etc/nginx/conf.d \
-v /var/log/nginx:/var/log/nginx \
reg01.sky-mobi.com/huoshu/nginx:1.0.0

關於升級

上述啓動命令中掛載的/opt/apps/front的目標結構如下.

$ tree -L 2.
├── bi_FE
├── hdc_FE
└── nginx.conf.d
    ├── bi.conf
    └── hdc.conf

其中nginx.conf.d掛載到nginx容器的/etc/nginx/conf.d目錄, 所以可以直接在宿主機上編輯這個文件再重啓容器中的nginx.

另外, 由於/opt/apps/front目錄整個掛載到容器中, 在nginx容器運行期間, 這個目錄不可刪除. 升級前端工程時需要將新的工程包放到這個/opt/apps/front目錄下, 替換掉原來的工程目錄, 然後重啓nginx.

不可刪除的原因, nginx容器持有/opt/apps/front目錄的句柄, 刪除這個目錄只是刪除了它的索引, 實際存儲塊還在. 新建的目錄不會重新掛載到容器.

2.2 nginx重啓命令

不用進入容器就可以執行命令, 使用docker exec 容器id 目標命令, 如下

$ docker exec c98790552123 nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful$ docker exec c98790552123 nginx -s reload

當然, docker-enter進入容器再操作也是一樣的.

3. redis容器操作

啓動命令: 映射端口, 掛載存儲及日誌目錄(都在/var/log目錄下).

$ docker run -d --restart=always \
--net huoshu --ip=172.21.0.3 -p 6379:6379 \
-v /var/log/redis:/var/log/redis \
reg01.sky-mobi.com/huoshu/redis:1.0.0

4. 工程容器

注意:

  1. --net--ip-p選項指定的值與nginx的配置文件對應, 不要輕易修改.

  2. ORACLE_ADDR變量, 不同醫院的oracle地址要在啓動時指定, 根據實際情況修改.

etlloader

$ docker run -d --restart=always --name etlloader \--net huoshu --ip 172.21.1.4 -p 8380:8080 \-e ORACLE_ADDR=172.16.4.101 \-v /var/log/etlloader:/opt/etlloader/consolelog \reg01.sky-mobi.com/huoshu/etlloader:1.0.0

skydata-se

$ docker run -d --restart=always --name skydata-se \--net huoshu --ip=172.21.1.3 -p 8280:8080 \-v /var/log/skydata-se:/usr/local/apache-tomcat-8.5.4/logs \-e ORACLE_ADDR=172.16.4.101 \reg01.sky-mobi.com/huoshu/skydata-se:1.0.0

hdc-manager

$ docker run -d --restart=always --name hdc-manager \--net huoshu --ip=172.21.1.2 -p 8180:8080 \-v /var/log/hdc-manager:/usr/local/apache-tomcat-8.5.4/logs \-e ORACLE_ADDR=172.16.4.101 \reg01.sky-mobi.com/huoshu/hdc-manager:1.0.0

drgs

$ docker run -d --restart=always \--net huoshu --ip 172.21.1.5 -p 9998:9998 \-e ORACLE_ADDR=172.16.4.101 \-v /var/log/drgs:/opt/drgs/log \reg01.sky-mobi.com/huoshu/drgs:1.0.0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章