准备工作
创建LibreOffice镜像
1. 拉取基础镜像
docker pull centos:centos7.9.2009
2. 创建容器
docker run --name libreoffice -dt -v /iflytek/data/docker/:/iflytek/data/container -v /iflytek/data/docker/libreoffice:/usr/lib64/libreoffice centos:centos7.9.2009
3. 在容器内安装LibreOffice
# 进入容器
docker exec -it libreoffice /bin/bash
# 安装LibreOffice
yum update -y
yum install -y libreoffice
yum groupinstall -y "Fonts"
yum groupinstall -y "Input Methods"
# 验证LibreOffice转换文件
docker exec libreoffice-yum /bin/bash -c 'soffice --headless --invisible --convert-to pdf --outdir /iflytek/data/container /iflytek/data/container/test.docx'
4. 将容器打包成镜像
docker commit {LibreOffice容器ID} libreoffice:5.3.6.1
# 或者基于Dockerfile镜像构建
docker image build -t view-ocr:2.3 .
5. 导出镜像文件
docker save {LibreOffice镜像ID} -o libreoffice5.3.6.1.tar
# 推送到Dockerhub, 第一步需要先打个tag
docker tag view-ocr:2.3 tonnyyi/view-ocr:2.3
docker push tonnyyi/view-ocr
实际局点部署
离线安装docker
1. 下载离线安装包
2. 准备docker.service系统配置文件
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
3. 准备安装和卸载脚本
echo ‘将docker目录移到/usr/bin目录下…’ cp docker/* /usr/bin/
echo ‘将docker.service 移到/etc/systemd/system/ 目录…’ cp docker.service /etc/systemd/system/
echo ‘添加文件权限…’ chmod +x /etc/systemd/system/docker.service
echo ‘重新加载配置文件…’ systemctl daemon-reload
echo ‘启动docker…’ systemctl start docker
echo ‘设置开机自启…’ systemctl enable docker.service
echo ‘docker安装成功…’ docker -v
- 卸载脚本 `uninstall.sh`
```bash
#!/bin/sh
echo '删除docker.service...'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
4. 安装
- 将上面4个文件
docker-{VERSION}.tgz
docker.service
install.sh
uninstall.sh
放在同一文件夹下 - 执行安装脚本
sh install.sh docker-{VERSION}.tgz
- 脚本执行完后, 执行
docker -v
, 如果能显示docker版本则表示安装成功
debain 下安装
离线安装包 https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/, 依次下载
containerd.io
、docker-ce-cli
和docker-ce
三个软件包wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/containerd.io_1.2.6-3_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce-cli_19.03.5~3-0~debian-buster_amd64.deb wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce_19.03.5~3-0~debian-buster_amd64.deb
安装
dpkg -i containerd.io_1.2.6-3_amd64.deb dpkg -i docker-ce-cli_19.03.5~3-0~debian-buster_amd64.deb dpkg -i docker-ce_19.03.5~3-0~debian-buster_amd64.deb
创建LibreOffice容器
1. 加载镜像文件
docker load -i image_libreoffice5.3.6.1.tar
2. 创建容器
docker run --name view-ocr -dt -v /iflytek/data/docker:/iflytek/data/container -p 19091:9091 -p 19092:9092 -p 19093:9093 -p 19094:9094 libreoffice:5.3.6.1
3. 配置应用文件
将应用包保存到
/iflytek/data/docker
, 然后使用tar -xvf ***.tar.gz
进行解压
之后按原来的方式修改applicaiton-prod.properties
文件, 注意: 应用的端口只能配置上面创建容器时配置的9091/9092/9093/9094
几个端口, 其他的ocr/fastDFS/Mysql/OCR引擎按原来的方式, 正常配置ip端口即可3. 进入容器启动服务
```bash
进入docker容器
docker exec -it view-ocr /bin/bash
确认java环境
java -version
如果报错或者显示openJDK则执行
source /etc/profile
启动应用
cd /iflytek/data/container/vision-agent-web-{VERSION}/bin ./start.sh
查看日志
tail -100f ../logs/vision-agent-{DATE}
cd /iflytek/data/container/view-ocr-server-{VERSION}/bin ./start.sh
查看日志
tail -100f ../logs/view-ocr.log
<a name="XKXN2"></a>
### 4. 验证服务
在浏览器打开 `http://{宿主机IP}:19092/ocr-ui/swagger-ui.html#!/recognise45controller/uploadFileUsingPOST` , **注意: 端口是`19092`, 与创建容器时配置的端口映射有关**, 如果应用配置了9093, 对应的访问端口就是19093, 以此类推.<br />在swagger页面通过**文件上传接口**上传一个文件, userId和dirId随便填
<a name="RqlVv"></a>
# docker常用命令
```bash
# 查看所有容器及其启停状态
docker ps -a
# 启动容器
docker start 容器名称或者容器ID
# 停止容器
docker stop 容器名称或者容器ID
# 进入容器
docker exec -it 容器名称或者容器ID /bin/bash
# 退出容器, 回到宿主机, 需要在进入容器后执行
exit