Support for nightly builds

pull/22/head
Jody Garnett 2023-04-27 19:53:56 -07:00
parent b470f7835d
commit 1afa2c8cd1
4 changed files with 86 additions and 13 deletions

View File

@ -54,3 +54,67 @@ docker build \
--build-arg ADDITIONAL_LIBS_PATH={RELATIVE_PATH_TO_YOUR_LIBS} --build-arg ADDITIONAL_LIBS_PATH={RELATIVE_PATH_TO_YOUR_LIBS}
-t {YOUR_TAG} . -t {YOUR_TAG} .
``` ```
## How to build from nightly snapshot releases?
By default ``WAR_ZIP_URL``, ``STABLE_PLUGIN_URL`` make use of sourceforge downloads to obtain official releases.
Override these arguments to make use of build.geoserver.org nightly releases:
* ``--build-arg WAR_ZIP_URL=https://build.geoserver.org/geoserver/${GS_VERSION}/geoserver-${GS_VERSION}-latest-war.zip``
* ``--build-arg STABLE_PLUGIN_URL=https://build.geoserver.org/geoserver/${GS_VERSION}/ext-latest/``
* ``--build-arg COMMUNITY_PLUGIN_URL=https://build.geoserver.org/geoserver/${GS_VERSION}/community-latest/``
Here is a working example for building 2.23.x nightly build::
```
docker build \
--build-arg WAR_ZIP_URL=https://build.geoserver.org/geoserver/2.23.x/geoserver-2.23.x-latest-war.zip \
--build-arg STABLE_PLUGIN_URL=https://build.geoserver.org/geoserver/2.23.x/ext-latest/ \
--build-arg COMMUNITY_PLUGIN_URL=https://build.geoserver.org/geoserver/2.23.x/community-latest/ \
--build-arg GS_VERSION=2.23-SNAPSHOT \
-t 2.23.x .
```
When running both stable extensions and community modules can be included:
```
docker run -it -p 80:8080 \
--env INSTALL_EXTENSIONS=true \
--env STABLE_EXTENSIONS="ysld" \
--env COMMUNITY_EXTENSIONS="ogcapi" \
-t 2.23.x
```
Community modules are only available for nightly builds as they have not yet met the requirements for production use. Developers have shared these to attract participation, feedback and funding.
## How to build from main snapshot releases?
The build.geoserver.org output for the ``main`` branch requires the following:
* ``--build-arg WAR_ZIP_URL=https://build.geoserver.org/geoserver/main/geoserver-main-latest-war.zip``
* ``--build-arg STABLE_PLUGIN_URL=https://build.geoserver.org/geoserver/main/ext-latest/``
* ``--build-arg COMMUNITY_PLUGIN_URL=https://build.geoserver.org/geoserver/main/community-latest/``
Here is a working example for building main branch as 2.24.x build:
```
docker build \
--build-arg WAR_ZIP_URL=https://build.geoserver.org/geoserver/main/geoserver-main-latest-war.zip \
--build-arg STABLE_PLUGIN_URL=https://build.geoserver.org/geoserver/main/ext-latest/ \
--build-arg COMMUNITY_PLUGIN_URL=https://build.geoserver.org/geoserver/main/community-latest/ \
--build-arg GS_VERSION=2.24-SNAPSHOT \
-t 2.24.x .
```
When running both [stable extensions](https://build.geoserver.org/geoserver/main/ext-latest/) and [community modules](https://build.geoserver.org/geoserver/main/community-latest/) can be included:
```
docker run -it -p 80:8080 \
--env INSTALL_EXTENSIONS=true \
--env STABLE_EXTENSIONS="wps,css" \
--env COMMUNITY_EXTENSIONS="ogcapi-coverages,ogcapi-dggs,ogcapi-features,ogcapi-images,ogcapi-maps,ogcapi-styles,ogcapi-tiled-features,ogcapi-tiles" \
-t 2.24.x
```

View File

@ -1,9 +1,9 @@
FROM ubuntu:22.04 FROM ubuntu:22.04
# The GS_VERSION argument could be used like this to overwrite the default: # The GS_VERSION argument could be used like this to overwrite the default:
# docker build --build-arg GS_VERSION=2.21.2 -t geoserver:2.21.2 . # docker build --build-arg GS_VERSION=2.23.0 -t geoserver:2.23.0 .
ARG TOMCAT_VERSION=9.0.68 ARG TOMCAT_VERSION=9.0.74
ARG GS_VERSION=2.22.0 ARG GS_VERSION=2.23.0
ARG GS_DATA_PATH=./geoserver_data/ ARG GS_DATA_PATH=./geoserver_data/
ARG ADDITIONAL_LIBS_PATH=./additional_libs/ ARG ADDITIONAL_LIBS_PATH=./additional_libs/
ARG ADDITIONAL_FONTS_PATH=./additional_fonts/ ARG ADDITIONAL_FONTS_PATH=./additional_fonts/
@ -11,7 +11,9 @@ ARG CORS_ENABLED=false
ARG CORS_ALLOWED_ORIGINS=* ARG CORS_ALLOWED_ORIGINS=*
ARG CORS_ALLOWED_METHODS=GET,POST,PUT,DELETE,HEAD,OPTIONS ARG CORS_ALLOWED_METHODS=GET,POST,PUT,DELETE,HEAD,OPTIONS
ARG CORS_ALLOWED_HEADERS=* ARG CORS_ALLOWED_HEADERS=*
ARG WAR_ZIP_URL=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/geoserver-${GS_VERSION}-war.zip
ARG STABLE_PLUGIN_URL=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/extensions ARG STABLE_PLUGIN_URL=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/extensions
ARG COMMUNITY_PLUGIN_URL=''
# Environment variables # Environment variables
ENV CATALINA_HOME=/opt/apache-tomcat-${TOMCAT_VERSION} ENV CATALINA_HOME=/opt/apache-tomcat-${TOMCAT_VERSION}
@ -26,8 +28,11 @@ ENV CORS_ALLOWED_METHODS=$CORS_ALLOWED_METHODS
ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
ENV INSTALL_EXTENSIONS=false ENV INSTALL_EXTENSIONS=false
ENV WAR_ZIP_URL=$WAR_ZIP_URL
ENV STABLE_EXTENSIONS='' ENV STABLE_EXTENSIONS=''
ENV STABLE_PLUGIN_URL=$STABLE_PLUGIN_URL ENV STABLE_PLUGIN_URL=$STABLE_PLUGIN_URL
ENV COMMUNITY_EXTENSIONS=''
ENV COMMUNITY_PLUGIN_URL=$COMMUNITY_PLUGIN_URL
ENV ADDITIONAL_LIBS_DIR=/opt/additional_libs/ ENV ADDITIONAL_LIBS_DIR=/opt/additional_libs/
ENV ADDITIONAL_FONTS_DIR=/opt/additional_fonts/ ENV ADDITIONAL_FONTS_DIR=/opt/additional_fonts/
ENV SKIP_DEMO_DATA=false ENV SKIP_DEMO_DATA=false
@ -63,7 +68,7 @@ RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/b
WORKDIR /tmp WORKDIR /tmp
# install geoserver # install geoserver
RUN wget -q -O /tmp/geoserver.zip https://downloads.sourceforge.net/project/geoserver/GeoServer/$GEOSERVER_VERSION/geoserver-$GEOSERVER_VERSION-war.zip && \ RUN wget -q -O /tmp/geoserver.zip $WAR_ZIP_URL && \
unzip geoserver.zip geoserver.war -d $CATALINA_HOME/webapps && \ unzip geoserver.zip geoserver.war -d $CATALINA_HOME/webapps && \
mkdir -p $CATALINA_HOME/webapps/geoserver && \ mkdir -p $CATALINA_HOME/webapps/geoserver && \
unzip -q $CATALINA_HOME/webapps/geoserver.war -d $CATALINA_HOME/webapps/geoserver && \ unzip -q $CATALINA_HOME/webapps/geoserver.war -d $CATALINA_HOME/webapps/geoserver && \

View File

@ -18,19 +18,19 @@ This README.md file covers use of official docker image, additional [build](BULD
To pull an official image use ``docker.osgeo.org/geoserver:{{VERSION}}``, e.g.: To pull an official image use ``docker.osgeo.org/geoserver:{{VERSION}}``, e.g.:
```shell ```shell
docker pull docker.osgeo.org/geoserver:2.22.0 docker pull docker.osgeo.org/geoserver:2.23.0
``` ```
Afterwards you can run the pulled image locally with: Afterwards you can run the pulled image locally with:
```shell ```shell
docker run -it -p 80:8080 docker.osgeo.org/geoserver:2.22.0 docker run -it -p 80:8080 docker.osgeo.org/geoserver:2.23.0
``` ```
Or if you want to start the container daemonized, use e.g.: Or if you want to start the container daemonized, use e.g.:
```shell ```shell
docker run -d -p 80:8080 docker.osgeo.org/geoserver:2.22.0 docker run -d -p 80:8080 docker.osgeo.org/geoserver:2.23.0
``` ```
Check <http://localhost/geoserver> to see the geoserver page, Check <http://localhost/geoserver> to see the geoserver page,
@ -47,7 +47,7 @@ To use an external folder as your geoserver data directory.
```shell ```shell
docker run -it -p 80:8080 \ docker run -it -p 80:8080 \
--mount src="/absolute/path/on/host",target=/opt/geoserver_data/,type=bind \ --mount src="/absolute/path/on/host",target=/opt/geoserver_data/,type=bind \
docker.osgeo.org/geoserver:2.22.0 docker.osgeo.org/geoserver:2.23.0
``` ```
An empty data directory will be populated on first use. You can easily update GeoServer while An empty data directory will be populated on first use. You can easily update GeoServer while
@ -62,7 +62,7 @@ The environment variable `SKIP_DEMO_DATA` can be set to `true` to create an empt
```shell ```shell
docker run -it -p 80:8080 \ docker run -it -p 80:8080 \
--env SKIP_DEMO_DATA=true \ --env SKIP_DEMO_DATA=true \
docker.osgeo.org/geoserver:2.22.0 docker.osgeo.org/geoserver:2.23.0
``` ```
## How to issue a redirect from the root ("/") to GeoServer web interface ("/geoserver/web")? ## How to issue a redirect from the root ("/") to GeoServer web interface ("/geoserver/web")?
@ -83,7 +83,7 @@ Example installing wps and ysld extensions:
```shell ```shell
docker run -it -p 80:8080 \ docker run -it -p 80:8080 \
--env INSTALL_EXTENSIONS=true --env STABLE_EXTENSIONS="wps,ysld" \ --env INSTALL_EXTENSIONS=true --env STABLE_EXTENSIONS="wps,ysld" \
docker.osgeo.org/geoserver:2.22.0 docker.osgeo.org/geoserver:2.23.0
``` ```
The list of extensions (taken from SourceForge download page): The list of extensions (taken from SourceForge download page):
@ -108,7 +108,7 @@ If you want to add geoserver extensions/libs, place the respective jar files in
```shell ```shell
docker run -it -p 80:8080 \ docker run -it -p 80:8080 \
--mount src="/dir/with/libs/on/host",target=/opt/additional_libs,type=bind \ --mount src="/dir/with/libs/on/host",target=/opt/additional_libs,type=bind \
docker.osgeo.org/geoserver:2.22.0 docker.osgeo.org/geoserver:2.23.0
``` ```
## How to add additional fonts to the docker image (e.g. for SLD styling)? ## How to add additional fonts to the docker image (e.g. for SLD styling)?
@ -118,7 +118,7 @@ If you want to add custom fonts (the base image only contains 26 fonts) by using
```shell ```shell
docker run -it -p 80:8080 \ docker run -it -p 80:8080 \
--mount src="/dir/with/fonts/on/host",target=/opt/additional_fonts,type=bind \ --mount src="/dir/with/fonts/on/host",target=/opt/additional_fonts,type=bind \
docker.osgeo.org/geoserver:2.22.0 docker.osgeo.org/geoserver:2.23.0
``` ```
**Note:** Do not change the target value! **Note:** Do not change the target value!

View File

@ -28,12 +28,16 @@ if [ "$INSTALL_EXTENSIONS" = "true" ]; then
URL="${STABLE_PLUGIN_URL}/geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip" URL="${STABLE_PLUGIN_URL}/geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip"
download_extension ${URL} ${EXTENSION} download_extension ${URL} ${EXTENSION}
done done
for EXTENSION in $(echo "${COMMUNITY_EXTENSIONS}" | tr ',' ' '); do
URL="${COMMUNITY_PLUGIN_URL}/geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip"
download_extension ${URL} ${EXTENSION}
done
echo "Finished download of extensions" echo "Finished download of extensions"
fi fi
# Install the extensions # Install the extensions
echo "Starting installation of extensions" echo "Starting installation of extensions"
for EXTENSION in $(echo "${STABLE_EXTENSIONS}" | tr ',' ' '); do for EXTENSION in $(echo "${STABLE_EXTENSIONS},${COMMUNITY_EXTENSIONS}" | tr ',' ' '); do
ADDITIONAL_LIB=${ADDITIONAL_LIBS_DIR}geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip ADDITIONAL_LIB=${ADDITIONAL_LIBS_DIR}geoserver-${GEOSERVER_VERSION}-${EXTENSION}-plugin.zip
[ -e "$ADDITIONAL_LIB" ] || continue [ -e "$ADDITIONAL_LIB" ] || continue