docker 安装 geoserver

docker 安装 geoserver

文章目录

  • [docker 安装 geoserver](#docker 安装 geoserver)

一、准备工作

shell 复制代码
# 获取最新镜像
docker pull kartoza/geoserver
shell 复制代码
#创建数据持久化目录
/usr/local/application/geoserver/data_dir

#授权
chmod 777 -R /usr/local/application/

二、创建容器

shell 复制代码
docker run \
--name geoserver \
-d \
-p 8090:8080 \
--restart always \
-e GEOSERVER_ADMIN_USER=admin \
-e GEOSERVER_ADMIN_PASSWORD=geoserver \
-e GEOSERVER_DATA_DIR=/opt/geoserver/data_dir \
-v /usr/local/application/geoserver/data_dir:/opt/geoserver/data_dir \
kartoza/geoserver

容器启动后,在浏览器中访问 服务器ip:8090/geoserver,访问成功效果如下

三、安装插件

​ 如果通过docker部署的geoserver中缺失部分插件(mysql 等),那么可以去官网下载对应版本的插件,再将插件解压到 geoserver/WEB-INF/lib 目录下,重启容器,即可实现插件加载。

3.1 插件下载

​ 到官方插件下载地址,确定自己GeoServer的版本,找到插件列表中对应插件(例如MySQL)即可下载

下载完成后,解压缩,将jar文件拷贝到GeoServer/WEB-INF/lib中

3.2 将插件拷贝进容器

​ 将下载的插件解压后,可以看到对应的jar包。然后将插件所有jar包,拷贝进插件默认安装目录下即可。可以通过 find 命令,查找 WEB-INF 关键字所在目录

shell 复制代码
find . -type d -name WEB-INF
sql 复制代码
find: './etc/ssl/private': Permission denied
find: './proc/tty/driver': Permission denied
find: './proc/1/map_files': Operation not permitted
find: './proc/8442/map_files': Operation not permitted
find: './proc/8465/map_files': Operation not permitted
find: './root': Permission denied
./usr/local/tomcat/webapps/geoserver/WEB-INF
./usr/local/tomcat/webapps/ROOT/WEB-INF
./usr/local/tomcat/webapps/docs/WEB-INF
./usr/local/tomcat/webapps/docs/appdev/sample/web/WEB-INF
./usr/local/tomcat/webapps/examples/WEB-INF
./usr/local/tomcat/webapps/host-manager/WEB-INF
./usr/local/tomcat/webapps/manager/WEB-INF
find: './var/cache/apt/archives/partial': Permission denied
find: './var/cache/ldconfig': Permission denied

从上述查找结果中,看到 /usr/local/tomcat/webapps/geoserver/WEB-INF目录,即为geoserver部署主要目录。接下来只需要将插件拷贝进该目录下的lib 目录即可。

shell 复制代码
#通过docker cp 命令,将宿主机上文件拷贝进容器。
docker cp /宿主机目录/插件jar 容器id:/usr/local/tomcat/webapps/geoserver/WEB-INF/lib
3.3 创建新镜像

​ 容器安装完插件后,可以基于容器,创建新镜像,后期基于该镜像创建的容器,都将拥有该插件。

shell 复制代码
#语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

#基于容器e218edb10161,生成新镜像runoob/ubuntu:v2
runoob@runoob:~$ docker commit -m="has update" -a="lifp" e218edb10161 runoob/ubuntu:v2

四、配置 nginx 代理

​ 如果nginx部署在内网服务器,若有互联网ip或者域名,可以用来配置代理的话,那么可以进行如下配置。假如现有域名 www.test.com,该域名80端口已映射到某台机器的端口,那么在该端口所在nginx中,可以进行如下配置,来实现,通过访问 http://www.test.com/geoserver 连接,可以直接访问到内网服务器10.15.11.18 中部署的geoserver应用。

yaml 复制代码
#geoserver代理
location ^~/geoserver/ {
    proxy_pass http://192.168.11.18:8090/geoserver/;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
相关推荐
吴半杯1 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
lwprain2 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
Code_Artist4 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
mengao12344 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
Eternal-Student4 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
不是二师兄的八戒4 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
码农小丘4 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
Eternal-Student5 小时前
【1.2 Getting Started--->Installation Guide】
docker
灼烧的疯狂6 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins