其中oracle
, redis
在第一次部署完成後再也不須要大的變更, 工程容器則須要常常升級, nginx
容器也須要常常重啓.css
注意點:前端
docker run
中-v
選項是將宿主機目錄掛載到容器中的指定目錄, 這是一個覆蓋的操做.nginx
掛載的日誌目錄務必放在宿主機的空間較大的分區上, 以避免日誌滿而形成服務沒法運行. 該文檔中認爲/opt
是空間較大的分區.redis
docker服務會接管宿主機的防火牆, 容器與宿主機的端口映射都是有docker經過iptables完成的, 因此不要再執行關閉或清空防火牆的操做.sql
$ 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容器掛掉後依然須要手動進入容器再執行一遍上述操做.服務器
數據存儲目錄須要單獨打包. 啓動時也應把這個目錄掛載出來, 以防容器崩潰時數據丟失.
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
目錄的句柄, 刪除這個目錄只是刪除了它的索引, 實際存儲塊還在. 新建的目錄不會從新掛載到容器.
不用進入容器就能夠執行命令, 使用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
進入容器再操做也是同樣的.
啓動命令: 映射端口, 掛載存儲及日誌目錄(都在/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
注意:
--net
, --ip
與-p
選項指定的值與nginx的配置文件對應, 不要輕易修改.
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