docker部署文檔(一)

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

注意點:前端

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

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

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

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進入容器, 執行初始化腳本, 並啓動數據實例docker

## 執行初始化腳本, 使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>

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

若是oracle容器在獨立的服務器上, 則不須要指定IP, 只須要映射容器的1521端口到宿主機自己的1521端口上便可.tomcat

注意:bash

因爲--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
相關文章
相關標籤/搜索