diff --git a/01_geoserver.sh b/01_geoserver.sh deleted file mode 100644 index fcfa23d..0000000 --- a/01_geoserver.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -e - -if [ -n "${ADMIN_PASSWD}" ]; then - cat > /opt/geoserver/data_dir/security/usergroup/default/users.xml < - - - -EOF -fi - -cd /opt/geoserver/bin -./startup.sh diff --git a/Dockerfile b/Dockerfile index 0ce36b8..3670ffe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,31 @@ -FROM neowaylabs/java8:latest +FROM docker.osgeo.org/geoserver:2.23.1 -MAINTAINER Rodrigo Zanato Tripodi +# +# Set GeoServer version and data directory +# +ARG GEOSERVER_VERSION=2.23 +ARG PATCH_NUMBER=1 +ARG CORS_ENABLED=true +ARG CORS_ALLOWED_METHODS=GET,POST,PUT,HEAD,OPTIONS +ENV GEOSERVER_DATA_DIR="/geoserver_data" -EXPOSE 8080 +# +# Download and install GeoServer +# +RUN apt update && \ + apt upgrade -y && \ + apt install unzip -ENV JAVA_OPTS -Xms128m -Xmx512m -XX:MaxPermSize=512m -ENV ADMIN_PASSWD geoserver +# Download the backup/restore plugin +RUN mkdir geoserver-backup-plugin && cd geoserver-backup-plugin && \ + wget -c https://build.geoserver.org/geoserver/${GEOSERVER_VERSION}.x/community-latest/geoserver-${GEOSERVER_VERSION}-SNAPSHOT-backup-restore-plugin.zip && \ + unzip geoserver-${GEOSERVER_VERSION}-SNAPSHOT-backup-restore-plugin.zip && \ + rm geoserver-${GEOSERVER_VERSION}-SNAPSHOT-backup-restore-plugin.zip -RUN apt-get install -qqy unzip && \ - wget -c http://downloads.sourceforge.net/project/geoserver/GeoServer/2.6.1/geoserver-2.6.1-bin.zip \ - -O /tmp/geoserver-2.6.1-bin.zip && \ - unzip /tmp/geoserver-2.6.1-bin.zip -d /opt && \ - cd /opt && \ - ln -s geoserver-2.6.1 geoserver +# Place the backup/restore plugin to be installed on startup +RUN mkdir /opt/additional_libs && \ + cp geoserver-backup-plugin/* /opt/additional_libs/ && \ + rm -rf geoserver-backup-plugin -ADD 01_geoserver.sh /etc/my_init.d/01_geoserver.sh -RUN chmod +x /etc/my_init.d/01_geoserver.sh +ENV JAVA_OPTS="-Djavax.servlet.response.encoding=UTF-8 -Duser.timezone=GMT -Dorg.geotools.shapefile.datetime=true" -CMD ["/sbin/my_init"] - -RUN apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/Makefile b/Makefile index 617cbc5..88c8dff 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,4 @@ -IMAGENAME = neowaylabs/geoserver - -all: build +IMAGENAME = navenio-docker.jfrog.io/geoserver/geoserver_2_14:${TAG} build: docker build -t $(IMAGENAME) . @@ -10,3 +8,9 @@ clean: test: docker run --rm -t -i -p 8080:8080 $(IMAGENAME) + +test_volume: + docker run --rm -t -i -p 8080:8080 -v ${LOCAL_DATA_DIR}:/geoserver_data/data $(IMAGENAME) + +push: + docker push $(IMAGENAME) \ No newline at end of file diff --git a/README.md b/README.md index a6d5c07..5d1f294 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,24 @@ [Geoserver](http://geoserver.org/) docker -## Environment settings: +## Environment settings * JAVA_OPTS (default: -Xms128m -Xmx512m -XX:MaxPermSize=512m) * ADMIN_PASSWD (default: geoserver) -## Exposed TCP ports: +## Exposed TCP ports -* 8080: REST and Admin interface +* 80: REST and Admin interface -## Internal volumes: +## Internal volumes -* /opt/geoserver/data_dir: default application data directory -* /opt/geoserver/data_dir/styles: styles (sld, xml, images) directory +* /geoserver_data: default application data directory + +## Plugins installed + +* backup/restore + +## Docker compose + +* Download data directory (e.g. kubectl -n geoserver-prod cp geoserver-prod/geoserver-prod-0:/geoserver_data/data .). Run via docker-compose -f docker-compose.yaml up --build +* You can then find the geoserver at localhost/geoserver/ diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..be40e92 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,21 @@ +version: '1' +services: + geoserver: + build: + context: . + args: + - GEOSERVER_VERSION=2.23 + - CORS_ENABLED=true + - CORS_ALLOWED_METHODS=GET,POST,PUT,HEAD,OPTIONS + ports: + - 80:8080 + environment: + - INSTALL_EXTENSIONS=true + - STABLE_EXTENSIONS=wps,csw + - EXTRA_JAVA_OPTS=-Xms1G -Xmx2G + - SKIP_DEMO_DATA=true + - ROOT_WEBAPP_REDIRECT=true + - GEOSERVER_REQUIRE_FILE=/geoserver_data/global.xml + - GEOSERVER_DATA_DIR=/geoserver_data + volumes: + - ./data:/geoserver_data/:Z