Nel
Nel

Reputation: 574

Mailhog is not working in Laravel 8.x + Sail

I'm using Sail with Laravel 8.x
I set it up and it's working perfectly.
However, as said here in the Doc, I'm supposed to be able to access the MailHog web interface at: http://localhost:8025 since I configured my .env like this:

MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_ENCRYPTION=null

But http://localhost:8025 shows me This page isn’t working

Any help? Please!

Upvotes: 3

Views: 7815

Answers (4)

Gamal Anwar
Gamal Anwar

Reputation: 59

Don't forget to run this after adding Mailhog to docker-compose.yml

sail up 

Upvotes: 0

user154745
user154745

Reputation: 71

This applies to Laravel 9.x + Sail as well.

Mailhog is not installed by default within the docker-compose file when using Sail, and there is no mention of enabling it within the official docs (which is one of many things wrong with the Laravel documentation, but...).

As hinted at by the accepted answer, you need to add the following to your docker-compose.yml file:

mailhog:
    image: 'mailhog/mailhog:latest'
    ports:
        - '${FORWARD_MAILHOG_PORT:-1025}:1025'
        - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
    networks:
        - sail

After restarting Sail, you can then access the Mailhog web interface at localhost:8025

Upvotes: 2

CaroFG
CaroFG

Reputation: 445

Try replacing "localhost" try with "mailhog" https://docs.docker.com/compose/networking/

Upvotes: 0

Zrelli Majdi
Zrelli Majdi

Reputation: 1260

This my docker-compose.yml file

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
            - meilisearch
            - selenium
    mysql:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
          retries: 3
          timeout: 5s
    redis:
        image: 'redis:alpine'
        ports:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        volumes:
            - 'sailredis:/data'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "redis-cli", "ping"]
          retries: 3
          timeout: 5s
    meilisearch:
        image: 'getmeili/meilisearch:latest'
        ports:
            - '${FORWARD_MEILISEARCH_PORT:-7700}:7700'
        volumes:
            - 'sailmeilisearch:/data.ms'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "wget", "--no-verbose", "--spider",  "http://localhost:7700/health"]
          retries: 3
          timeout: 5s
    mailhog:
        image: 'mailhog/mailhog:latest'
        ports:
            - '${FORWARD_MAILHOG_PORT:-1025}:1025'
            - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
        networks:
            - sail
    selenium:
       image: 'selenium/standalone-chrome'
       volumes:
            - '/dev/shm:/dev/shm'
       networks:
           - sail
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local
    sailmeilisearch:
        driver: local

Upvotes: 5

Related Questions