我在 docker 中使用 Laravel,我决定连接 mailtrap 服务来测试邮件发送。但它在 docker 中不起作用,如果您不在 docker 中运行项目,它会根据需要发送邮件。
这是我的 docker compose 文件和 laravel 设置。
我的docker-compose.yml
version: '3'
services:
project-nginx:
container_name: project-nginx
build:
context: .docker/nginx
dockerfile: Dockerfile
links:
- project-php
- project-node
volumes:
- ./.docker/nginx/project.conf:/etc/nginx/conf.d/default.conf:ro
- ${WWW_PATH}:/var/www/:rw
ports:
- ${NGINX_PORT_HTTP_HOST}:80
- ${NGINX_PORT_HTTPS_HOST}:443
networks:
project-network:
ipv4_address: 128.10.0.3
restart: unless-stopped
project-php:
container_name: project-php
build:
context: .docker/php
dockerfile: Dockerfile
links:
- project-postgres
- project-redis
volumes:
- project-composer:/home/www-data/.composer/:rw
- ${WWW_PATH}:/var/www/:rw
- ./.docker/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini:ro
- ./.docker/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./.docker/php/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
working_dir: /var/www/
expose:
- 9000
ports:
- ${PHP_FPM_PORT_HOST}:9000
environment:
PHP_IDE_CONFIG: "serverName=project-docker"
networks:
project-network:
ipv4_address: 128.10.0.4
restart: unless-stopped
project-node:
container_name: project-node
build:
context: .docker/node
dockerfile: Dockerfile
volumes:
- ${WWW_PATH}:/var/www/:rw
working_dir: /var/www
expose:
- 3002
ports:
- ${NODE_PORT_HOST}:3002
networks:
project-network:
ipv4_address: 128.10.0.5
restart: unless-stopped
project-postgres:
container_name: project-postgres
image: postgres:11.10
volumes:
- project-postgres:/var/lib/postgres/:rw
- ./.docker/postgres/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
- ./.docker/postgres/dump/project2.sql:/dump/project2.sql:ro
- ./.docker/postgres/dump/projectstat.sql:/dump/projectstat.sql:ro
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-Qwerty123}
networks:
project-network:
ipv4_address: 128.10.0.6
ports:
- ${POSTGRES_PORT_HOST}:5432
restart: unless-stopped
project-redis:
container_name: project-redis
build:
context: .docker/redis
dockerfile: Dockerfile
expose:
- 6379
volumes:
- project-redis:/data:rw
networks:
project-network:
ipv4_address: 128.10.0.7
ports:
- ${REDIS_PORT_HOST}:6379
restart: unless-stopped
networks:
project-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 128.10.0.0/24
driver_opts:
com.docker.network.bridge.name: br_project
volumes:
project-composer:
external:
name: project-composer
project-postgres:
external:
name: project-postgres
project-redis:
external:
name: project-redis
我的 Laravel.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=my_name
MAIL_PASSWORD=123
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=hello@test.com
MAIL_FROM_NAME="${APP_NAME}"
SENDGRID_API_KEY=my_key
也许有人有一些想法,为什么 mailtrap 不在 docker 中发送信件?
你能告诉我问题是什么吗?