This page aims to provide a quick start for standing up an ERDDAP server using the ERDDAP Docker image and a few IOOS Gold Standard Example datasets. You can view this setup live at https://standards.sensors.ioos.us/erddap/index.html, with dataset documentation at https://ioos.github.io/ioos-metadata/gold-standard-examples.html.
This getting started page provides instructions and links to external resources for setting up an ERDDAP server using a single Docker image. Multi-node Kubernetes deployments are linked to under the Other deployment options sidebar.
While this is intended to help get you started quickly, it is highly recommended that any ERDDAP administrator becomes comfortable with the source ERDDAP documentation at: https://coastwatch.pfeg.noaa.gov/erddap/download/setup.html
Requirements
There are a few items you need to have installed on your system to deploy ERDDAP using the https://github.com/ioos/erddap-gold-standard repository.
- Git: https://git-scm.com/
- Docker: https://www.docker.com/
- (optional) Docker compose: https://docs.docker.com/compose/install/
Step 1: Download this Repo
Create a folder to clone the ERDDAP repository into, or just into your home directory. For more help on cloning repositories available on GitHub, please check here.
$ git clone https://github.com/ioos/erddap-gold-standard.git
Now let’s have a look at what we downloaded.
$ cd erddap-gold-standard/
$ ls -Ap
.env.template .gitignore DasDds.sh docker-compose.yml erddap_utils.sh README.md
.git/ ArchiveADataset.sh datasets/ erddap/ GenerateDatasetsXml.sh
Step 2: Start the Docker daemon/engine
- Windows:
- Search for Docker, and select Docker Desktop in the search results.
- Linux:
sudo systemctl start docker
- Mac:
- Double-click Docker.app in the Applications folder to start Docker.
Step 3: Deploy ERDDAP locally
- Run it!
$ cd erddap-gold-standard/ $ docker run --rm \ --name erddap_gold_standard \ -p 8080:8080 \ -v $(pwd)/erddap/conf/config.sh:/usr/local/tomcat/bin/config.sh \ -v $(pwd)/erddap/conf/robots.txt:/usr/local/tomcat/webapps/ROOT/robots.txt \ -v $(pwd)/erddap/content:/usr/local/tomcat/content/erddap \ -v $(pwd)/erddap/data:/erddapData \ -v $(pwd)/datasets:/datasets \ axiom/docker-erddap:2.23-jdk17-openjdkget
axiom/docker-erddap:2.23-jdk17-openjdkor the latest one available from axiom docker-erddap.or, copy the
.env.templatefile to.env, and then rundocker-compose:$ cp .env.template .env $ docker-compose up -d- Remember, when you run ERDDAP from the Docker container, various configuration files will be mounted into the
container from your local system. Review the various mount points (
-vflags in yourdocker run/docker-compose.yml) to ensure you know where the appropriate files are coming from and going to.
- Remember, when you run ERDDAP from the Docker container, various configuration files will be mounted into the
container from your local system. Review the various mount points (
-
You should be able to see something similar to the following:
Creating network "erddap-gold-standard_default" with the default driver Pulling erddap (axiom/docker-erddap:2.23-jdk17-openjdk)... 2.23-jdk17-openjdk: Pulling from axiom/docker-erddap Digest: sha256:1ae5c7637ba14db60c5a0cd143e9fc1eb4115cdd8f030f40b22d1fdbea919ba3 Status: Downloaded newer image for axiom/docker-erddap:2.23-jdk17-openjdk Creating erddap_gold_standard ... done -
Connecting to your new ERDDAP server:
In your web browser navigate to http://localhost:8080/erddap/index.html. You should now see the standard ERDDAP Website:

You can monitor http://localhost:8080/erddap/status.html to see the status of your ERDDAP.
Step 4: Making ERDDAP Publicly Accessible
If you want other people to reach your ERDDAP over the internet, you need to make the host running Docker reachable, set ERDDAP’s public URLs, and (recommended) terminate TLS with a reverse proxy.
At a minimum you will need:
- A public IP address for the machine running Docker (cloud VM, or home/office network with port-forwarding)
- Inbound firewall/security group rules that allow traffic to your server
- Recommended: TCP 80 (HTTP) and 443 (HTTPS)
- Alternative: TCP 8080 if you plan to expose Tomcat directly (not recommended)
- A DNS name pointing at that public IP (strongly recommended), e.g.
erddap.example.org
Option A (recommended): reverse proxy + TLS (ports 80/443)
Run a reverse proxy (e.g., Nginx, Caddy, Traefik) on the host that forwards https://erddap.example.org/erddap/ to http://localhost:8080/erddap/ and obtains/renews a TLS certificate (e.g., Let’s Encrypt).
Then update your ERDDAP configuration so links it generates use your public hostname:
ERDDAP_baseUrl=https://erddap.example.orgERDDAP_baseHttpsUrl=https://erddap.example.org
In this repo, you can set these in your .env (copied from .env.template) and redeploy with docker-compose up -d.
See Customizing your ERDDAP for more context.
Option B: expose port 8080 directly
You can map the container port to a public port on the host (e.g., -p 8080:8080) and then allow inbound traffic to that port.
If you do this, you should still set ERDDAP_baseUrl/ERDDAP_baseHttpsUrl to your public URL and consider moving to HTTPS (Option A) as soon as possible.
Step 5: Next Steps
Once you have successfully deployed an ERDDAP using the Docker instance, it’s time to start testing out what you can do. Below are links to a few of the topics that might be of interest:
- Adding datasets to ERDDAP - How to add new datasets to ERDDAP
- Customizing your ERDDAP - How to configure ERDDAP using environment variables.
- Updating ERDDAP - How to update ERDDAP when using Docker.
- Useful utilities - Examples of a few other useful commands.