Installation & Setup

Docker Deployment Guide for AcelleMail

January 29, 2026 1 min read 5,142 views Tutorial

Overview

Running AcelleMail in Docker isolates dependencies, simplifies updates, and makes scaling individual components easier.

docker-compose.yml

version: "3.9"
services:
  app:
    build: .
    volumes:
      - .:/var/www/html
    depends_on: [mysql, redis]
    env_file: .env

  worker:
    build: .
    command: php artisan queue:work redis --sleep=3 --tries=3
    depends_on: [mysql, redis]
    env_file: .env
    deploy:
      replicas: 4

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - .:/var/www/html
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
      - certbot-etc:/etc/letsencrypt
    depends_on: [app]

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: acellemail
      MYSQL_USER: acelle
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: rootsecret
    volumes:
      - mysql-data:/var/lib/mysql

  redis:
    image: redis:alpine
    volumes:
      - redis-data:/data

volumes:
  mysql-data:
  redis-data:
  certbot-etc:

Dockerfile (simplified)

FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
    libzip-dev libpng-dev libxml2-dev \
    && docker-php-ext-install pdo_mysql zip gd bcmath intl
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY . .
RUN composer install --no-dev --optimize-autoloader

First Run

docker-compose up -d
docker-compose exec app php artisan migrate --seed
docker-compose exec app php artisan storage:link
docker-compose exec app php artisan config:cache
A

AcelleMail Team