千家信息网

docker部署文档(一)

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,其中oracle, redis在第一次部署完成后不再需要大的变动, 工程容器则需要经常升级, nginx容器也需要经常重启.注意点:docker run中-v选项是将宿主机目录挂载到容器中的指定目录,
千家信息网最后更新 2025年02月08日docker部署文档(一)

其中oracle, redis在第一次部署完成后不再需要大的变动, 工程容器则需要经常升级, 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> startupORACLE instance started.Total System Global Area 3206836224 bytesFixed Size          2217632 bytesVariable Size         369101152 bytesDatabase Buffers     2818572288 bytesRedo Buffers           16945152 bytesDatabase 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 oknginx: 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


0