docker.recipes

Mealie Recipe Manager

beginner

Mealie self-hosted recipe manager and meal planner with shopping lists.

Overview

Mealie is a modern, self-hosted recipe manager and meal planning application built with Vue.js and FastAPI that transforms how households organize their culinary life. Developed as an open-source alternative to commercial meal planning services, Mealie allows users to import recipes from websites, create custom recipes with rich formatting, plan meals on a calendar, and automatically generate shopping lists. The application features a clean, responsive interface that works seamlessly across desktop and mobile devices, making it accessible from the kitchen or grocery store. This deployment pairs Mealie with PostgreSQL 16 to provide enterprise-grade data reliability and performance for recipe storage, meal plans, and user data. PostgreSQL's ACID compliance ensures meal plans and shopping lists remain consistent even during concurrent access, while its full-text search capabilities enable fast recipe discovery across ingredients, titles, and instructions. The combination delivers a robust foundation for households serious about meal planning, offering the data integrity needed for reliable shopping list generation and the performance required for searching through large recipe collections. This stack is ideal for families looking to centralize their recipe collection, reduce food waste through better meal planning, and streamline grocery shopping with automated list generation.

Key Features

  • Automatic recipe import from URLs with intelligent parsing of ingredients and instructions
  • Interactive meal planning calendar with drag-and-drop recipe scheduling
  • Smart shopping list generation that consolidates ingredients across multiple planned meals
  • Full-text search across recipe titles, ingredients, and cooking instructions using PostgreSQL's advanced search capabilities
  • Recipe scaling calculator that automatically adjusts ingredient quantities for different serving sizes
  • Custom recipe categories and tags with filtering and organization tools
  • User authentication system supporting multiple household members with shared recipe access
  • Nutritional information tracking and dietary restriction filtering for health-conscious meal planning

Common Use Cases

  • 1Family meal planning with automated grocery list generation to reduce food waste and shopping time
  • 2Recipe collection digitization for households transitioning from physical cookbooks and printed recipes
  • 3Dietary management for families with food allergies or specific nutritional requirements
  • 4Meal prep coordination for busy professionals planning weekly batch cooking sessions
  • 5Shared recipe management for multi-generational households with different cooking preferences
  • 6Budget-conscious meal planning with ingredient cost tracking and shopping optimization
  • 7Entertainment planning for hosts who frequently cook for guests and need scalable recipe management

Prerequisites

  • Docker Engine and Docker Compose installed on the host system
  • Minimum 1GB RAM available for PostgreSQL database operations and recipe indexing
  • Port 9925 available on the host for Mealie web interface access
  • Basic understanding of environment variable configuration for database credentials
  • Sufficient storage space for recipe images and PostgreSQL data (minimum 5GB recommended)
  • Network connectivity for importing recipes from external websites and downloading recipe images

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 mealie:
3 image: ghcr.io/mealie-recipes/mealie:latest
4 container_name: mealie
5 environment:
6 - ALLOW_SIGNUP=true
7 - PUID=1000
8 - PGID=1000
9 - TZ=${TZ}
10 - MAX_WORKERS=1
11 - WEB_CONCURRENCY=1
12 - BASE_URL=${BASE_URL}
13 - DB_ENGINE=postgres
14 - POSTGRES_USER=${POSTGRES_USER}
15 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
16 - POSTGRES_SERVER=postgres
17 - POSTGRES_PORT=5432
18 - POSTGRES_DB=mealie
19 volumes:
20 - mealie_data:/app/data
21 ports:
22 - "9925:9000"
23 depends_on:
24 - postgres
25 networks:
26 - mealie-network
27
28 postgres:
29 image: postgres:16-alpine
30 container_name: mealie-db
31 environment:
32 - POSTGRES_USER=${POSTGRES_USER}
33 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
34 - POSTGRES_DB=mealie
35 volumes:
36 - postgres_data:/var/lib/postgresql/data
37 networks:
38 - mealie-network
39
40volumes:
41 mealie_data:
42 postgres_data:
43
44networks:
45 mealie-network:
46 driver: bridge

.env Template

.env
1# Mealie
2TZ=UTC
3BASE_URL=http://localhost:9925
4POSTGRES_USER=mealie
5POSTGRES_PASSWORD=mealie_password

Usage Notes

  1. 1UI at http://localhost:9925
  2. 2Default login: changeme@example.com / MyPassword
  3. 3Import recipes from URLs
  4. 4Meal planning calendar
  5. 5Shopping list generation

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

mealie
mealie:
  image: ghcr.io/mealie-recipes/mealie:latest
  container_name: mealie
  environment:
    - ALLOW_SIGNUP=true
    - PUID=1000
    - PGID=1000
    - TZ=${TZ}
    - MAX_WORKERS=1
    - WEB_CONCURRENCY=1
    - BASE_URL=${BASE_URL}
    - DB_ENGINE=postgres
    - POSTGRES_USER=${POSTGRES_USER}
    - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    - POSTGRES_SERVER=postgres
    - POSTGRES_PORT=5432
    - POSTGRES_DB=mealie
  volumes:
    - mealie_data:/app/data
  ports:
    - "9925:9000"
  depends_on:
    - postgres
  networks:
    - mealie-network
postgres
postgres:
  image: postgres:16-alpine
  container_name: mealie-db
  environment:
    - POSTGRES_USER=${POSTGRES_USER}
    - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    - POSTGRES_DB=mealie
  volumes:
    - postgres_data:/var/lib/postgresql/data
  networks:
    - mealie-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 mealie:
5 image: ghcr.io/mealie-recipes/mealie:latest
6 container_name: mealie
7 environment:
8 - ALLOW_SIGNUP=true
9 - PUID=1000
10 - PGID=1000
11 - TZ=${TZ}
12 - MAX_WORKERS=1
13 - WEB_CONCURRENCY=1
14 - BASE_URL=${BASE_URL}
15 - DB_ENGINE=postgres
16 - POSTGRES_USER=${POSTGRES_USER}
17 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
18 - POSTGRES_SERVER=postgres
19 - POSTGRES_PORT=5432
20 - POSTGRES_DB=mealie
21 volumes:
22 - mealie_data:/app/data
23 ports:
24 - "9925:9000"
25 depends_on:
26 - postgres
27 networks:
28 - mealie-network
29
30 postgres:
31 image: postgres:16-alpine
32 container_name: mealie-db
33 environment:
34 - POSTGRES_USER=${POSTGRES_USER}
35 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
36 - POSTGRES_DB=mealie
37 volumes:
38 - postgres_data:/var/lib/postgresql/data
39 networks:
40 - mealie-network
41
42volumes:
43 mealie_data:
44 postgres_data:
45
46networks:
47 mealie-network:
48 driver: bridge
49EOF
50
51# 2. Create the .env file
52cat > .env << 'EOF'
53# Mealie
54TZ=UTC
55BASE_URL=http://localhost:9925
56POSTGRES_USER=mealie
57POSTGRES_PASSWORD=mealie_password
58EOF
59
60# 3. Start the services
61docker compose up -d
62
63# 4. View logs
64docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/mealie-recipes/run | bash

Troubleshooting

  • Database connection failed errors: Verify POSTGRES_USER and POSTGRES_PASSWORD match in both Mealie and PostgreSQL containers
  • Recipe import failing from websites: Check that the host has outbound internet access and the target website allows scraping
  • Slow search performance with large recipe collections: Increase PostgreSQL shared_buffers and effective_cache_size in database configuration
  • Shopping list not generating ingredients: Ensure recipes have properly formatted ingredient lists with quantities and units
  • Unable to access web interface: Verify port 9925 is not blocked by firewall and container is binding to correct network interface
  • Image uploads failing or not displaying: Check that mealie_data volume has sufficient disk space and proper permissions for PUID/PGID user

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space