After spending a little while playing around with the various Docker options this evening I thought I’d put together the config.json and docker-compose.yml files that finally worked for me when trying to deploy a stack of containers for NGINX Proxy Manager (I’m trying to play around with some reverse proxying on my local network whilst I use the quarantine/lockdown period to test new things!)

Using https://github.com/jlesage/docker-nginx-proxy-manager doesn’t seem to work (standard_init_linux.go:211: exec user process caused "exec format error" being the error) as it doesn’t have an ARM build and whilst the official image grabbed everything, the database container was throwing a similar error to the 1st. Playing around with linuxserver’s MariaDB container wasn’t working too well either (migration file "20180618015850_initial.js" failed was the initial error) and then I stumbled upon a Github user’s comment and whilst that didn’t work perfectly for me, a little tweaking led me to the below. With these, you’ll have a working instance of NGINX Proxy Manager running on your Raspberry Pi in no time.

Required files for this Docker reverse proxy

config.json

{
"database": {
"engine": "mysql",
"host": "db",
"name": "DBNAME",
"user": "DBUSERNAME",
"password": "DBPASSWORD",
"port": 3306
  }
}

docker-compose.yml

version: "3"  
services:  
  app:  
    image: jc21/nginx-proxy-manager:latest  
    restart: always  
    ports:  
      # Public HTTP Port:  
      - 80:80  
      # Public HTTPS Port:  
      - 443:443  
      # Admin Web Port:  
      - 81:81  
    volumes:  
# Make sure this config.json file exists as per instructions above:  
      - ./config.json:/app/config/production.json  
      - ./data:/data  
      - ./letsencrypt:/etc/letsencrypt  
  db:  
    image: yobasystems/alpine-mariadb:latest  
    restart: always  
    environment:  
      MYSQL_ROOT_PASSWORD: ROOTPASSWORD  
      MYSQL_DATABASE: DBNAME  
      MYSQL_USER: DBUSERNAME  
      MYSQL_PASSWORD: DBPASSWORD  
    volumes:  
      - /PATH/TO/CONTAINER/FILES:/var/lib/mysql  
    expose:  
      - "3306"

Once you have both of these in the same folder, use docker-compose up -d and let it run its course. If you see no errors, that’s it, you’re done!

If you’re also looking for another Docker container to run. Check out my guide on setting up Dynamic DNS with Cloudflare.

About Author

Bret

What started out with a Pi Model B 10 years has grown into 15+ Raspberry, Orange, Mango Pis etc sitting on my desk in various states of benchmarking. Hopefully not all of it was in vain!

10 Comments

  • Thanks so much! I was getting that error on my Pi 3. Great find! Got mine up and running 🙂

  • Hey Brandon, awesome – glad to hear this helped!

  • Hi.
    A have error :
    ERROR: In file ‘./docker-compose.yml’, service must be a mapping, not a NoneType.

    Raspbian / Pi4

  • Hey Carlos! It sounds like you may have modified the indentation whilst adding in your own details so I’d recommend double checking that. If you want to post your docker-compose.yml file to pastebin and reply with a link to it I can take a look for you 🙂

  • Hello Bret,

    I have the same error as Carlos, I did touch anything in your posted code. Just changed in the mariadb section the path to
    – /srv/dev-disk-by-label-Files/Config/MariaDB:/var/lib/mysql
    everything else including the json file are the same.

    Could you please help me, I have weeks trying to put Ngnix Proxy manager on my pi 4. is good to mention that I am running Raspberry Pi OS (32-bit) Lite Minimal image based on Debian Buster that the offiacial web provides

    • Hey! Could you throw your exact file in a pastebin somewhere and link to it here? The error usually means that something isn’t formatted quite right so it’s possible going between the article and your text editor caused something to get modified slightly but I’ll take a look if you can show me what you have!

    • It looks like the message has come through blank here, perhaps you could send the link etc via the contact form and I’ll take a look at it there!

  • Fantastic, helped me, thanks

    • Awesome, I’m glad to hear it! 😀

Leave a Reply

Your email address will not be published.