Skip to content

feat: Docker-Compose Production Deployment

Is your feature request related to a problem? Please describe

Currently there is not a documented way of using the production docker images that are available on hub.docker.com

Describe the solution you'd like

I recommend an update be made to the https://docs.castopod.org/ page to document how to use these images. Currently, I've put together a docker-compose.yml file that could be used in the guide.

version: "3.7"

services:
  app:
    image: castopod/app:develop
    container_name: "castopod-application"
    volumes:
      - castopod-media:/opt/castopod/public/media
    environment:
      MYSQL_DATABASE: castopod
      MYSQL_USER: castopod
      MYSQL_PASSWORD: changeme
      CP_ANALYTICS_SALT: changeme
      CP_BASEURL: "http://castopod.example.com"
    networks:
      - castopod-app
      - castopod-db
    restart: unless-stopped

  web:
    image: castopod/web-server:develop
    container_name: "castopod-web"
    volumes:
      - castopod-media:/var/www/html/media:ro
    networks:
      - castopod-app
    ports:
      - 8080:80
    restart: unless-stopped

  mariadb:
    image: mariadb:10.5
    container_name: "castopod-database"
    networks:
      - castopod-db
    volumes:
      - castopod-db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: changeme
      MYSQL_DATABASE: castopod
      MYSQL_USER: castopod
      MYSQL_PASSWORD: changeme
    restart: unless-stopped

volumes:
  castopod-media:
    name: "castopod-media"
  castopod-db:
    name: "castopod-db"

networks:
  castopod-app:
    name: "castopod"
  castopod-db:
    name: "castopod-db"

After the user sets up their reverse proxy of choice which handles https certs, the user would then deploy the dockerized version of castopod using docker compose -f docker-compose.yml up -d

Example reverse proxy entry for caddy:

castopod.example.com {
  reverse_proxy localhost:8080
}

Describe alternatives you've considered

I've been able to build the docker images directly from the source code, however the recommended solution would make things easier for broader adoption.

Additional context

N/A.