Skip to content

Instantly share code, notes, and snippets.

@DominikStyp
Last active December 13, 2022 15:03
Show Gist options
  • Save DominikStyp/29a84da7faddde681b1e3c9248562842 to your computer and use it in GitHub Desktop.
Save DominikStyp/29a84da7faddde681b1e3c9248562842 to your computer and use it in GitHub Desktop.
Laravel Sail + Docker Compose: FTP Server proper configuration
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://some.site.local
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=site_db
DB_USERNAME=site_db
DB_PASSWORD=site_db
FORWARD_DB_PORT=3306
SFTP_HOST=ftpd_server
SFTP_PORT=21
SFTP_USER=ftpuser
SFTP_PASSWORD=ftpuser
SFTP_USE_SSL=false
SFTP_USE_PASSIVE_MODE=false
LOG_CHANNEL=stack
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SAIL_XDEBUG_MODE=debug
APP_SERVICE=web
# For more information: https://laravel.com/docs/sail
version: '3'
services:
web:
build:
context: ./docker/7.1
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-7.1/api-middleware
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
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'
- './docker/7.1/php.ini:/etc/php/7.1/cli/conf.d/99-sail.ini'
networks:
- sail
depends_on:
- mysql
- selenium
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
- './docker/entrypoint.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
selenium:
image: 'selenium/standalone-chrome'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
mailhog:
image: 'mailhog/mailhog:latest'
ports:
- '${FORWARD_MAILHOG_PORT:-1025}:1025'
- '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
ftpd_server:
image: stilliard/pure-ftpd
container_name: pure-ftpd
ports:
- "21:21"
- "30000-30009:30000-30009"
volumes: # remember to replace /folder_on_disk/ with the path to where you want to store the files on the host machine
- "./storage/ftpdir/data:/home/ftpuser/"
- "./storage/ftpdir/passwd:/etc/pure-ftpd/passwd"
# uncomment for ssl/tls, see https://github.com/stilliard/docker-pure-ftpd#tls
# - "/folder_on_disk/ssl:/etc/ssl/private/"
# or ssl/tls with Let's Encrypt (cert and key as two files)
# - "/etc/letsencrypt/live/<your_server>/cert.pem:/etc/ssl/private/pure-ftpd-cert.pem"
# - "/etc/letsencrypt/live/<your_server>/privkey.pem:/etc/ssl/private/pure-ftpd-key.pem"
environment:
FTP_USER_NAME: ftpuser
FTP_USER_PASS: ftpuser
FTP_USER_HOME: /home/ftpuser
# also for ssl/tls:
# ADDED_FLAGS: "--tls=2"
restart: unless-stopped
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
<?php
// config/filesystems.php
....
'ftp' => [
'driver' => 'ftp',
'host' => env('SFTP_HOST'),
'port' => env('SFTP_PORT', 21),
'username' => env('SFTP_USER'),
'password' => env('SFTP_PASSWORD'),
'ssl' => env('SFTP_USE_SSL', true),
'timeout' => 10,
'passive' => env('SFTP_USE_PASSIVE_MODE', true), //for testing should be false locally
],
....
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment