Windows环境GeoServer打包Docker的方法实现

 更新时间:2024年12月23日 09:16:14   作者:AIGIS.  
本文介绍了在Windows环境下将GeoServer打包为Docker镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.前言

在 Windows 环境下将 GeoServer 打包为 Docker,可以实现跨平台一致性、简化环境配置、快速部署与恢复,同时便于扩展集成和版本管理,并通过资源隔离提高系统稳定性。由于近期需要在Docker中使用GeoServer,就折腾了一下Docker,也踩了一些GeoServer打包Docker的坑,尤其是在Windows环境下Docker的打包,索性记录一下。

2.安装Docker

直接在Docker官网https://www.docker.com/products/docker-desktop/下载最新版本的Docker Desktop,我下载的是Docker Desktop4.28.0,其中包含的Docker的版本是25.0.3,Docker-Compose的版本是2.24.6。注意不要混淆Docker和Docker Desktop。如果是低版本的Docker Desktop,那就需要自己手动安装Docker-Compose了。

在这里插入图片描述

在这里插入图片描述

配置一下Docker访问中国镜像源

在这里插入图片描述

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com"
  ]
}

配置完毕之后在cmd输入docker version确认一下是否安装成功了。

在这里插入图片描述

3.准备Dockerfile

准确的来说这一步应该叫做准备镜像所需的各种文件,包括GeoServer、Dockerfile、和jdk的环境,注意,jdk得是linux环境下的版本。我准备的GeoServer的版本是geoserver-2.22.5,jdk的环境是jdk1.8.

在这里插入图片描述

最重要的就是Dockerfile怎么写?下面直接给出示例,都加上了注释,相信不难理解了。

# 使用基础镜像
FROM ubuntu:20.04

# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk8
ENV PATH=$JAVA_HOME/bin:$PATH

# 将 Jetty 的默认端口(通常是8080)暴露出来
EXPOSE 8080

# 复制并解压 JDK
COPY jdk-8u191-linux-x64.tar.gz /usr/local/
RUN tar -xzf /usr/local/jdk-8u191-linux-x64.tar.gz -C /usr/local/ \
    && mv /usr/local/jdk1.8.0_191 $JAVA_HOME \
    && rm /usr/local/jdk-8u191-linux-x64.tar.gz

# 复制 GeoServer 文件夹到镜像中
COPY geoserver-2.22.5-bin /usr/local/geoserver-2.22.5-bin

# 设置工作目录
WORKDIR /usr/local/geoserver-2.22.5-bin/bin

# 给启动脚本增加执行权限
RUN chmod +x /usr/local/geoserver-2.22.5-bin/bin/startup.sh

# 设置容器启动时的默认命令
CMD ["./startup.sh"]

4.拉取linux环境

因为我们是基于ubuntu:20.04来打包docker的,因此在打包时会自动去拉取ubuntu:20.04,为了防止失败,我们先手动拉取一下ubuntu:20.04。

在这里插入图片描述

等待拉取完毕后,我们使用docker images命令确认一下是否存在ubuntu的镜像了。

在这里插入图片描述

5.打包镜像

这一步没什么好说的了,直接在Dockerfile所在的路径执行打包命令就行了,我的机器不知道为什么不识别-t命令,-t是--tag的简写,既然不支持简写,那我就写完了吧。唯一注意的地方是打包命令最后面的点不要忘了,表示在当前目录查找文件。

docker build --tag geoserver:2.22.6 .

在这里插入图片描述

现在使用docker images命令看一下是否存在打包好的文件了。

在这里插入图片描述

6.数据挂载

好了,现在已经打包完成了,还差最重要的一步。gis中涉及的影像数据都很大,动不动上百个G,shp文件也要经常变动,所以它们是不可能打包到docker里的,那么怎么让docker能够访问到机器上的这些文件呢?那就是使用数据挂载。

首先我们新建两个数据卷。一个挂载data_dir文件夹,一个挂载lib文件夹。因为这两个文件夹里内容经常要变动。注意在windows上创建的数据卷在linux路径下才能找得到。

docker volume create geoserver_data_dir
docker volume create geoserver_lib

在这里插入图片描述

这两个路径和GeoServer的路径的对应关系如下:

在这里插入图片描述

将右边两个文件里的全部内容拷贝到左边对应文件夹的_data文件夹里,注意:_data这个文件夹是docker自动创建的。

在这里插入图片描述

好了,拷贝完毕,现在可以启动镜像并指定数据挂载了。

docker run --name geoserver -d -p 8080:8080 \
-v geoserver_data_dir:/usr/local/geoserver-2.22.5-bin/data_dir \
-v geoserver_lib:/usr/local/geoserver-2.22.5-bin/webapps/geoserver/WEB-INF/lib \
geoserver:2.22.5

由于windows的cmd里不能多行输入,我就干脆写为一行了。

在这里插入图片描述

在docker desktop里看到已经启动了,点击端口号在浏览器打开访问一下。

在这里插入图片描述

在这里插入图片描述

6.测试数据挂载

现在我想拓展一下mysql的连接,先看一下数据存储里是没有mysql的选项的。

在这里插入图片描述

现在我们把mysql的插件安装一下,拷贝插件的jar包到我们的挂载路径geoserver_lib下。

在这里插入图片描述

重启镜像

docker container geoserver restart

在这里插入图片描述

nice,出现了mysql,说明数据挂载OK了。

7.总结

本文中我们探讨了Windows平台上GeoServer的Docker打包,以及数据挂载,最后进行了测试,表明我们的Docker打包是成功的。需要注意的是Docker命令有时不能识别简写形式的命令,那就写全。另外数据挂载可以使用普通的数据卷,也可以直接挂载一个目录。但是我挂载目录后,在访问时出现了资源访问不到的问题。估计是windows的路径问题导致的,linux上没有这个问题。两种数据挂载方式都可以。如果有人知道后者的原因,也请告诉我一下。

到此这篇关于Windows环境GeoServer打包Docker的方法实现的文章就介绍到这了,更多相关GeoServer打包Docker内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 清除docker无用镜像实现过程

    清除docker无用镜像实现过程

    文章介绍了查看和清理Docker占用资源的方法,包括使用docker container ls、image ls、volume ls等命令了解资源状态,并通过docker system prune删除未使用容器、镜像、网络及缓存,同时强调删除镜像前需先移除引用容器
    2025-08-08
  • 一文详解如何获取docker镜像中的jar包

    一文详解如何获取docker镜像中的jar包

    本人在工作中遇到了需要在docker查看jar这种操作,查看了许多资料,终于还是找到了,下面这篇文章主要给大家介绍了关于如何获取docker镜像中jar包的相关资料,需要的朋友可以参考下
    2024-05-05
  • Docker 镜像源配置详细步骤

    Docker 镜像源配置详细步骤

    文章介绍了如何配置Docker镜像源以提高国内拉取镜像的速度,步骤包括找到并编辑配置文件、写入镜像源配置、重启Docker服务等,文章还详细比较了systemctl和service的区别,并提供了验证配置是否成功的命令,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Docker删除已存在的镜像的实现

    Docker删除已存在的镜像的实现

    本文主要介绍了Docker删除已存在的镜像的实现,删除已存在的 Docker 镜像,可以使用 docker rmi 命令,下面就来详细的介绍一下使用步骤,感兴趣的可以了解一下
    2023-08-08
  • Docker部署MySQL镜像的保姆级教程

    Docker部署MySQL镜像的保姆级教程

    docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的可移植容器,mysql是一个流行的关系型数据库管理系统,在Docker中部署MySQL镜像可以方便地创建和管理MySQL数据库实例,本文给大家介绍了Docker部署MySQL镜像的教程,需要的朋友可以参考下
    2025-06-06
  • 如何解决Docker连接本地MySQL服务失败的问题

    如何解决Docker连接本地MySQL服务失败的问题

    这篇文章主要介绍了如何解决Docker连接本地MySQL服务失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • Docker & Docker Compose安装教程

    Docker & Docker Compose安装教程

    本文详细介绍了在Ubuntu 22.04.1 LTS系统上安装和配置Docker的步骤,包括选择合适的存储驱动和日志驱动,生产级配置以及用户权限管理,通过一系列检查步骤和常用命令,确保Docker安装和配置的正确性
    2026-01-01
  • Docker开启远程访问的实现方式

    Docker开启远程访问的实现方式

    这篇文章主要介绍了Docker开启远程访问的实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Docker 部署 Minio 对象存储服务器的过程详解

    Docker 部署 Minio 对象存储服务器的过程详解

    Minio是一个轻量级的应用程序,可以在各种环境中运行,包括公共云、私有云和混合云,这篇文章主要介绍了Docker 部署 Minio 对象存储服务器的过程详解,需要的朋友可以参考下
    2024-07-07
  • docker安装mysql完美教程(建议收藏!)

    docker安装mysql完美教程(建议收藏!)

    最近使用docker,故将数据库和程序都用docker来一遍,下面这篇文章主要给大家介绍了关于docker安装mysql完美教程的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03

最新评论