Lab 2: Run workshop components with Docker
In this lab, you’ll run a demo backend application and several NGINX Open Source and NGINX Plus containers with Docker. The backend application runs in three nginxinc/ingress-demo containers, each serving a simple web page. You’ll also connect each NGINX container to the NGINX One Console for management and monitoring.
By the end of this tutorial, you can:
- Set environment variables for your data plane key and license
- Log in to the NGINX private registry
- Generate self-signed certificates
- Run Docker Compose to start nine containers
- Verify your containers in Docker and in NGINX One Console
Make sure you have:
- All labs require an F5 Distributed Cloud (XC) account with NGINX One enabled. If you don’t have an account or need to verify access, follow the steps in Lab 1: Before you begin. 
- Docker and Docker Compose installed and running
- An active data plane key from Lab 1: Get started with NGINX One Console
- A trial or paid NGINX One JWT license (saved as nginx-repo.jwt) from MyF5
- Basic Linux and NGINX knowledge
- Git installed and an SSH key set up for GitHub access
- 
Clone the repo via SSH git clone git@github.com:nginx/documentation.git
- 
Change to the Lab 2 directory cd static/workshops/nginx-one/lab2This folder contains compose.yamlandgenerate_certs.sh.
- 
Set your data plane key shellexport TOKEN="paste-your-data-plane-key-here" echo "$TOKEN"
- 
Set your NGINX Plus JWT shellexport JWT=$(cat path/to/nginx-repo.jwt) echo "$JWT"
- 
Give your setup a unique name Replace your.initialswith something that identifies you (for example,s.jobs).shellexport NAME="your.initials" echo "$NAME"
Pipe your JWT into Docker login:
echo "$JWT" | docker login private-registry.nginx.com \
--username "$JWT" --password-stdinYou should see Login Succeeded.
Run the script to create self-signed certificates:
chmod +x generate_certs.sh
./generate_certs.shThis creates 1-day.key, 1-day.crt, 30-day.key, and 30-day.crt in the nginx-oss/etc/ssl/nginx subfolder.
Start all nine containers in detached mode:
docker compose up --force-recreate -dWait until you see Started for each container.
- 
Check Docker docker ps | grep "$NAME"You should see nine containers listed. 
- 
Check NGINX One Console - Go to the Instances page in NGINX One Console
- Refresh and search by your $NAME(for example,s.jobs)
- Confirm each instance shows a green Online icon
 If you don’t see them, check your $TOKENor generate a new data plane key.
Your containers are now up and registered with NGINX One Console.
Go to Lab 3: Explore NGINX One Console features.