gdal容器化记录

搭建镜像仓库

镜像仓库

# 拉取镜像仓库
docker pull registry
# 启动镜像仓库
docker run -id --name=registry -p 5000:5000 registry
# 修改docker的配置文件
vim /etc/docker/daemon.json
# 添加以下内容
{
  "registry-mirrors": ["https://1yub28r4.mirror.aliyuncs.com"],
  "insecure-registries": ["10.112.229.252:5000"]
}
# 重启docker使配置文件生效
systemctl restart docker

# 前置条件:本地和服务器安装docker,并且已经修改daemon配置文件
# 镜像仓库常用命令(要上传镜像仓库需要修改tag名)
docker tag 镜像名:lastest 10.112.229.252:5000/镜像名:lastest
# 推送到远程仓库
docker push 10.112.229.252:5000/镜像名:lastest
# 服务器拉取镜像仓库
docker pull 10.112.229.252:5000/镜像名:lastest
# 修改服务器tag(这步可以不加,为了镜像名好看)
docker tag 10.112.229.252:5000/镜像名:lastest 镜像名:lastest
Gdal容器化记录

失败,docker hub里的不能用

FROM osgeo/gdal:ubuntu-small-3.4.0

ADD jdk-8u172-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_172
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

VOLUME /tmp
COPY target/sawc-calculate-biz-1.0-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

# 容器中服务使用的端口号,和yml文件中server.port保持一致
EXPOSE 8016
创建镜像

去dockerHub找一个合适的linux镜像,本次选了centos7

# docker拉取镜像
docker pull centos:centos7

centos镜像仓库地址

创建dockerfile文件,用下的linux镜像作为基础为镜像安装java8

FROM centos:centos7
# 添加java8的jdk
ADD jdk-8u172-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_172
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin

执行dockerfile文件

# 构建docker镜像centos-java:lastest
docker build -t centos-java:lastest .
容器内安装gdal

首先创建容器并进入容器

gdal下载地址

proj下载地址

  1. 安装 gcc,g++ 等编译器
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake 
  1. 安装sqlit、proj、swig
# 安装 sqlite-devel 
yum install sqlite-devel 
# 将电脑中的proj拷贝到容器中/usr/local目录下(heuristic_elbakyan为容器名)
docker cp /Users/xxx/Downloads/proj-6.2.1.tar.gz makegdal:/usr/local
# 解压文件夹
tar -zxvf proj-6.2.1.tar.gz 
# 进入文件夹编译
cd proj-6.2.1
./configure 
make
make install 
# 安装 swig
yum install -y swig 
  1. 编译gdal
# 将电脑中的gdal拷贝到容器中/usr/local目录下(heuristic_elbakyan为容器名)
docker cp /Users/xxx/Downloads/gdal-3.0.4.tar.gz makegdal:/usr/local
tar -zxvf gdal-3.0.4.tar.gz
cd gdal-3.0.4
./configure --prefix="/usr/local"
make
make install 
  1. 配置环境变量
vi ~/.bashrc
export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

gdalinfo --version 
  1. 安装ant

ant官网

# 将本地目录中的ant压缩包复制进容器
docker cp /Users/xxx/Downloads/apache-ant-1.10.12-bin.tar.gz 容器名:/usr/local
# 进入到容器目录解压
tar -zxvf apache-ant-1.10.12-bin.tar.gz 
# 安装vim编辑器
yum -y install vim
# 打开配置文件
vim /etc/profile
# 在文件最后添加ant环境
export ANT_HOME=/usr/local/apache-ant-1.10.12
# 并把ant环境添加到path中
export PATH=$PATH:$JAVA_HOME/bin:${ANT_HOME}/bin
# 刷新配置文件
source /etc/profile

# 测试
[root@eureka src]# ant -version
Apache Ant(TM) version 1.10.12 compiled on April 12 2021 \
  1. 编译并生成gdal
# 使用 gdal 进行 java 的转换需修改 swig 对应的文件
# 修改文件:gdal 根目录 /swig/java/java.opt,添加 JAVA_HOME 的值为 java 的根目录。
vim /usr/local/gdal-3.0.4/swig/java/java.opt
# 在文件的最后添加
JAVA_HOME=/usr/local/jdk1.8.0_172
# 在路径:gdal 根目录 /swig/java 中执行
# 安装3.4.0这步报错
make && make install
# 把 gdal 根目录 /swig/java 中生成的 gdal.jar 文件复制到 $JAVA_HOME/jre/lib/ext 下
cp gdal.jar /usr/local/jdk1.8.0_172/jre/lib/ext/
# 把.so、.lo、.o、.la、*.a复制到自己方便的文件夹下,一般是 $JAVA_HOME/jre/lib/amd64/server(*.a没有报错)
cp *.so *.lo *.o *.la /usr/local/jdk1.8.0_172/jre/lib/amd64/server
# vim /etc/profile 然后在/etc/profile中添加
export LD_LIBRARY_PATH=.:$JAVA_HOME/jre/lib/amd64/server
# 最后
source /etc/profile 
保存容器状态,生成镜像

d03d3eb38b50为容器id

# 在容器修改后不能保存到镜像,需要重新自己创建镜像
docker commit 容器名 镜像名:lastest

# gdal测试文件复制到容器
docker cp /Users/xxx/Downloads/l.tif magical_napier:/usr/local
docker cp /Users/xxx/Downloads/test1\(1\).jar magical_napier:/usr/local
source保存问题

docker每次重新启动都需要重新执行source /etc/profile,网上的方法都失败了

解决方案:编写dockerfile重新创建镜像,文件中加环境变量

# 基础镜像
FROM gdal-env-1:lastest
# dockerfile添加环境变量
ENV PATH $PATH:/usr/local/bin
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/lib
ENV ANT_HOME /usr/local/apache-ant-1.10.12
ENV PATH $PATH:$JAVA_HOME/bin:${ANT_HOME}/bin
ENV LD_LIBRARY_PATH .:$JAVA_HOME/jre/lib/amd64/server

输出日志中文问题

# dockerfile添加环境变量
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:UTF-8
ENV LC_ALL en_US.UTF-8

执行命令

docker build -t gdal-3.0.4:lastest .
上传镜像仓库
# 镜像重命名
docker tag gdal-3.0.4:lastest 10.112.229.252:5000/gdal-3.0.4:lastest
# 推送到镜像仓库
docker push 10.112.229.252:5000/gdal-3.0.4:lastest
# 从镜像仓库拉取
docker pull 10.112.229.252:5000/gdal-3.0.4:lastest
# 镜像tag重命名
docker tag 10.112.229.252:5000/gdal-3.0.4:lastest gdal-3.0.4:lastest
镜像执行
# 对于没有进程的docker容器启动后会自动停止,可以开命令行让他不停止
docker run -dit --name gdal-3.0.4 gdal-3.0.4:lastest /bin/bash
# 进入命令行
docker exec -it gdal-3.0.4 /bin/sh
镜像测试
# sawc-calucate启动命令
docker rmi 10.112.229.252:5000/sawc-calculate:lastest
docker rmi sawc-calculate:lastest
docker pull 10.112.229.252:5000/sawc-calculate:lastest
docker tag 10.112.229.252:5000/sawc-calculate:lastest sawc-calculate:lastest
docker run -d --name sawc-calculate -p 8016:8016 sawc-calculate:lastest

# 非容器启动jar包命令
nohup java -jar sawc-calculate1.jar > nohup.out 2>&1 &

# 非容器启动jar包带参数
nohup java -jar -Xms1024m -Xmx25600m -XX:ParallelGCThreads=8 -DBLOCK_MAX_SIZE=1000000 -DTP_CALCULATE_SIZE=1 sawc-calculate.jar > nohup.out 2>&1 &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值