Server image of Community Server solution
2.7K
This DockerFile implementation should be used in combination with the sola-community-db image. To run this SOLA Community Serverimage, first run the sola-community-db image then this image using the following commands on a computer running Docker Desktop:
docker run -p 5432:5432 --name cs-db -e POSTGRES_PASSWORD=sola -d npullar/sola-community-db
docker run --name cs-pgadmin -p 81:80 -e "PGADMIN_DEFAULT_EMAIL=[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=your-password" -d dpage/pgadmin4
docker run --name cs-portainer -p 9000:80 -d portainer/portainer
docker run -p 4848:4848 -p 8080:8080 -p 8181:8181 --name cs-server --link cs-db:database -d npullar/sola-community-server
docker run --name cs-geoserver -p 8085:8080 -d oscarfonts/geoserver
docker run --name cs-jasperserver -p 8090:8080 -e "DB_TYPE=postgresql" -e "DB_HOST=localhost" -e "DB_PORT=5432" -e "DB_USER=postgres" -e "DB_PASSWORD=sola" -d retriever/jasperserver
docker run --name cs-db-backups -e "POSTGRES_DB=sola" -e "POSTGRES_HOST=localhost" -e "DB_PORT=5432" -e "POSTGRES_USER=postgres" -e "POSTGRES_PASSWORD=sola" -e "POSTGRES_EXTRA_OPTS=-Z9 -e "SCHEDULE=@daily" -e "BACKUP_KEEP_DAYS=7" -e "BACKUP_KEEP_WEEKS=4" -e "BACKUP_KEEP_MONTHS=6" -e "HEALTHCHECK_PORT=85" -d prodrigestivill/postgres-backup-local
The command to run sola-community-db should be run on one shell/powershell session. Once complete, the other docker commands (listed above) can be run on a new, separate shell/powershell session. On the first run of the cs-server service the SOLA Community application is deployed into the Payara application server. Allow up to 2 minutes for the container to completely initialize.
To access the Payara Admin console, go to http://localhost:4848. The credentials to login to Payara are username=admin and password=admin.
To access the PGadmin console , go to http://localhost:81. The credentials to login to PGadmin are what you entered in the pgadmin4 Docker command above.
To access the Geoserver Admin console, go to http://localhost:8085/geoserver. The credentials to login to Geoserver are username=admin and password=geoserver.
To access the Portainer console, go to http://localhost:9000. The credentials to login to Portainer are username=admin and password=portainer.
To access the JasperServer Admin console, go to http://localhost:8090. The credentials to login to JasperServer are username=jasperadmin and password=jasperadmin.
To access the SOLA Community Server web application, go to http://localhost:8080 (or https://localhost:8181). Note that SOLA does support Java 8. The username and password to login into SOLA Community Server is username=test and password=test.
To access the SOLA Web Admin app, go to https://localhost:8181/admin. The test/test credentials can also be used to login to the SOLA Web Admin app.
With both SOLA web applications, if you are shown an error page after you login, check the hostname in the URL is still set to localhost. If not, update the URL and refresh the page.
The output from the run command is a docker container called cs-server (instance of the sola-community-server image). To stop or restart this container use the following commands:
This image can be rebuilt using the Docker files located at https://github.com/OpenTenure/docker
Includes the complete SOLA Community Server solution including Geoserver, JasperReports, PGadmin, Portainer, Traefik (reverser proxy) and automated PostgreSQL backups. The Docker-compose yml file can be used to start multiple containers supporting the SOLA Community Server solution. Relevant docker-compose commands are:
docker-compose up -d (to install)
docker-compose stop (to shutdown all services or individual docker-compose services individuals using names as in yml file)
docker-compose start (to start all services or individual services by yml service names
docker-compose down -v --rmi all --remove-orphans (to uninstall and remove all docker containers & images associated with this SOLA Community Server Docker setup)
docker system prune
It will take up to 5 minutes to complete the Jasper Reports install and before all the SOLA Community Server (and Open Tenure) services can be accessed. These services are:
For the Traefik reverse-proxy arrangements (under development) you need to run this Docker command before the docker-compose up -d command
version: "3.7"
networks:
t1_proxy:
external:
name: t1_proxy
services:
traefik:
image: traefik:maroilles
container_name: traefik
restart: unless-stopped
networks:
- sola-cs
- t1_proxy
ports:
- "80:80"
- "443:443"
# - "$TRAEFIK_PORT:8080"
domainname: $DOMAINNAME
dns:
- 1.1.1.1
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- $USERDIR/docker/traefik1:/etc/traefik
- $USERDIR/docker/shared:/shared
environment:
CF_API_EMAIL: $CLOUDFLARE_EMAIL
CF_API_KEY: $CLOUDFLARE_API_KEY
labels:
traefik.enable: "true"
traefik.backend: traefik
traefik.protocol: http
traefik.port: 8080
# traefik.frontend.rule: Host:traefik.$DOMAINNAME
traefik.frontend.rule: Host:$DOMAINNAME;PathPrefixStrip:/traefik
traefik.docker.network: t1_proxy
# traefik.frontend.passHostHeader: "true"
traefik.frontend.headers.SSLForceHost: "true"
traefik.frontend.headers.SSLRedirect: "true"
traefik.frontend.headers.browserXSSFilter: "true"
traefik.frontend.headers.contentTypeNosniff: "true"
traefik.frontend.headers.forceSTSHeader: "true"
traefik.frontend.headers.STSSeconds: 315360000
traefik.frontend.headers.STSIncludeSubdomains: "true"
traefik.frontend.headers.STSPreload: "true"
traefik.frontend.headers.customResponseHeaders: X-Robots-Tag:noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex
# traefik.frontend.headers.frameDeny: "true" #customFrameOptionsValue overrides this
traefik.frontend.headers.customFrameOptionsValue: 'allow-from https:$DOMAINNAME'
# traefik.frontend.auth.basic.users: '$HTTP_USERNAME:$HTTP_PASSWORD'
# Portainer - Container Management
# Needs trailing / in the URL if using PathPrefixStrip
cs-portainer:
image: portainer/portainer:latest
container_name: cs-portainer
restart: unless-stopped
networks:
- t1_proxy
# ports:
# - "$PORTAINER_PORT:9000"
command: -H unix:///var/run/docker.sock
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $USERDIR/docker/portainer/data:/data
environment:
TZ: $TZ
labels:
traefik.enable: "true"
traefik.backend: cs-portainer
traefik.protocol: http
traefik.port: 9000
# traefik.frontend.rule: Host:portainer.$DOMAINNAME
traefik.frontend.rule: Host:$DOMAINNAME;PathPrefixStrip:/portainer
traefik.docker.network: t1_proxy
# traefik.frontend.passHostHeader: "true"
traefik.frontend.headers.SSLForceHost: "true"
traefik.frontend.headers.SSLRedirect: "true"
traefik.frontend.headers.browserXSSFilter: "true"
traefik.frontend.headers.contentTypeNosniff: "true"
traefik.frontend.headers.forceSTSHeader: "true"
traefik.frontend.headers.STSSeconds: 315360000
traefik.frontend.headers.STSIncludeSubdomains: "true"
traefik.frontend.headers.STSPreload: "true"
traefik.frontend.headers.customResponseHeaders: X-Robots-Tag:noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex
traefik.frontend.headers.customFrameOptionsValue: 'allow-from https:$DOMAINNAME'
# For external authentication (see www.portainer.io support for more details)
# traefik.frontend.auth.forward.address: "http://oauth:4181"
# traefik.frontend.auth.forward.authResponseHeaders: X-Forwarded-User
# traefik.frontend.auth.forward.trustForwardHeader: "true"
# An instance of Postgres with the CS SOLA database
cs-db:
container_name: cs-db
image: npullar/sola-community-db
restart: unless-stopped
networks:
sola-cs:
aliases:
- database
# ports:
# - "$PG_PORT:5432"
environment:
POSTGRES_PASSWORD: $PG_PASSWORD
CREATE_SOLA_DB: $CREATE_SOLA_DB
SOLA_LOAD_DATA: $SOLA_LOAD_DATA
TZ: $TZ
volumes:
- $USERDIR/docker/postgres/data:/var/lib/postgresql/data
labels:
traefik.enable: "false"
# Container that deploys pgAdmin4 to allow administration of the SOLA database. Accessible from
# http:domain.name/pgadmin with [email protected] and passwd=sola
cs-pgadmin:
image: dpage/pgadmin4
container_name: cs-pgadmin
restart: unless-stopped
# ports:
# - "$PGADMIN_PORT:80"
volumes:
- $USERDIR/docker/backups/adhoc:/backups
environment:
PGADMIN_DEFAULT_EMAIL: $PGADMIN_DEFAULT_EMAIL
PGADMIN_DEFAULT_PASSWORD: $PGADMIN_DEFAULT_PASSWORD
SCRIPT_NAME: $PGADMIN_SCRIPT
TZ: $TZ
networks:
- sola-cs
labels:
traefik.enable: "true"
traefik.backend: cs-pgadmin
traefik.frontend.rule: Host:$DOMAINNAME;PathPrefix:/pgadmin
# traefik.frontend.rule: Host:pgadmin.${DOMAINNAME}
traefik.frontend.headers.SSLRedirect: "true"
traefik.frontend.headers.STSSeconds: 315360000
traefik.frontend.headers.browserXSSFilter: "true"
traefik.frontend.headers.contentTypeNosniff: "true"
traefik.frontend.headers.forceSTSHeader: "true"
traefik.frontend.headers.SSLHost: $DOMAINNAME
traefik.frontend.headers.STSIncludeSubdomain: "true"
traefik.frontend.headers.STSPreload: "true"
# traefik.frontend.headers.frameDeny: "true" #customFrameOptionsValue overrides this
traefik.frontend.headers.customFrameOptionsValue: allow-from https:$DOMAINNAME
cs-server:
image: npullar/sola-community-server:prerelease
container_name: cs-server
restart: unless-stopped
ports:
- "$PAYARA_ADMIN_PORT:4848"
- "$SOLA_SRV_PORT:8080"
- "$WEB_ADMIN_PORT:8181"
depends_on:
- cs-jasperserver
environment:
WAIT_TIME: 180
TZ: $TZ
networks:
- t1_proxy
- sola-cs
labels:
traefik.enable: "true"
traefik.docker.network: t1_proxy
traefik.backend: cs-server
traefik.cs.port: 8080
traefik.cs.protocol: http
traefik.cs.frontend.rule: Host:$DOMAINNAME
traefik.payara.port: 4848
traefik.payara.protocol: http
traefik.payara.frontend.rule: Host:$DOMAINNAME;PathPrefix:/payara
traefik.frontend.headers.SSLRedirect: "true"
traefik.frontend.headers.STSSeconds: 315360000
traefik.frontend.headers.browserXSSFilter: true
traefik.frontend.headers.contentTypeNosniff: "true"
traefik.frontend.headers.forceSTSHeader: "true"
traefik.frontend.headers.SSLHost: $DOMAINNAME
traefik.frontend.headers.STSIncludeSubdomains: "false"
traefik.frontend.headers.STSPreload: "true"
# traefik.cs.frontend.headers.frameDeny: "true" #customFrameOptionsValue overrides this
traefik.frontend.headers.customFrameOptionsValue: allow-from https:$DOMAINNAME
cs-jasperserver:
image: retriever/jasperserver
container_name: cs-jasperserver
restart: unless-stopped
ports:
- "$JASPER_PORT:8080"
depends_on:
- cs-db
environment:
DB_TYPE: $DB_TYPE
DB_HOST: $PG_HOST
DB_PORT: $PG_PORT
DB_USER: $PG_USER
DB_PASSWORD: $PG_PASSWORD
DB_NAME_SOLA: $PG_DB
TZ: $TZ
networks:
- sola-cs
volumes:
- $USERDIR/docker/jasperserver-import:/jasperserver-import
cs-db-backups:
image: prodrigestivill/postgres-backup-local
container_name: cs-db-backups
restart: unless-stopped
volumes:
- $USERDIR/docker/backups/pg-cs:/backups
links:
- cs-db
depends_on:
- cs-db
environment:
POSTGRES_HOST: $PG_HOST
POSTGRES_DB: $PG_DB
POSTGRES_USER: $PG_USER
POSTGRES_PASSWORD: $PG_PASSWORD
# POSTGRES_PASSWORD_FILE=/run/secrets/db_password <-- alternative for POSTGRES_PASSWORD (to use with docker secrets)
POSTGRES_EXTRA_OPTS: $POSTGRES_EXTRA_OPTS
SCHEDULE: $SCHEDULE
BACKUP_KEEP_DAYS: $BACKUP_KEEP_DAYS
BACKUP_KEEP_WEEKS: $BACKUP_KEEP_WEEKS
BACKUP_KEEP_MONTHS: $BACKUP_KEEP_MONTHS
HEALTHCHECK_PORT: $HEALTHCHECK_PORT
TZ: $TZ
networks:
- sola-cs
# Uses https://hub.docker.com/r/oscarfonts/geoserver. Exposes Geoserver on port 8085
# IMPORTANT: Replace /C//Work/Lidar_Imagery with the location of your data_dir on your local computer. The path needs to use
# unix style path names so if using Windows, need to use /C// instead of c:\
cs-geoserver:
image: oscarfonts/geoserver
container_name: cs-geoserver
restart: unless-stopped
ports:
- "$GEOSERVER_PORT:8080"
depends_on:
- cs-db
volumes:
# - /C//$USERDIR/docker/geoserver_data:/var/local/geoserver # Windows
- $USERDIR/docker/geoserver_data:/var/local/geoserver #Linux and Mac
environment:
TZ: $TZ
networks:
- sola-cs
- t1_proxy
labels:
traefik.enable: "true"
traefik.docker.network: t1_proxy
traefik.backend: cs-geoserver
traefik.port: 8080
traefik.protocol: http
traefik.frontend.rule: Host:${DOMAINNAME};PathPrefix:/geoserver
# traefik.frontend.rule=Host:geoserver.$DOMAINNAME
traefik.frontend.headers.SSLRedirect: "true"
traefik.frontend.headers.STSSeconds: 15360000
traefik.frontend.headers.browserXSSFilter: "true"
traefik.frontend.headers.contentTypeNosniff: "true"
traefik.frontend.headers.forceSTSHeader: "true"
traefik.frontend.headers.SSLHost: $DOMAINNAME
traefik.frontend.headers.STSIncludeSubdomains: "false"
traefik.frontend.headers.STSPreload: "true"
# traefik.frontend.headers.frameDeny: true" #customFrameOptionsValue overrides this
traefik.frontend.headers.customFrameOptionsValue: allow-from https:$DOMAINNAME
Content type
Image
Digest
sha256:9ed2ab725…
Size
579.8 MB
Last updated
2 months ago
docker pull npullar/sola-community-server:2026-07-18