Level 2
never used sail .... u set Port in .env to 3001 maybe u only need to set url in your .env
APP_URL="http://localhost.local"
and the domain must be for u: 'localhost.local:3001'
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Attaching to tasker-app-laravel.test-1, tasker-app-mysql-1
./vendor/bin/sail up
[+] Running 9/2
! laravel.test Warning 1.5s
✔ mysql 7 layers [⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 125.9s
[+] Building 1.5s (16/16) FINISHED
=> [laravel.test internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [laravel.test internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 2.74kB 0.0s
=> [laravel.test internal] load metadata for docker.io/library/ubuntu:22.04 1.4s
=> [laravel.test 1/11] FROM docker.io/library/ubuntu:22.04@sha256:ac58ff7fe25edc58bdf0067ca99df00014dbd032e2246d30a722fa3 0.0s
=> [laravel.test internal] load build context 0.0s
=> => transferring context: 99B 0.0s
=> CACHED [laravel.test 2/11] WORKDIR /var/www/html 0.0s
=> CACHED [laravel.test 3/11] RUN ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo UTC > /etc/timezone 0.0s
=> CACHED [laravel.test 4/11] RUN apt-get update && apt-get install -y gnupg gosu curl ca-certificates zip unzip git 0.0s
=> CACHED [laravel.test 5/11] RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2 0.0s
=> CACHED [laravel.test 6/11] RUN groupadd --force -g 1000 sail 0.0s
=> CACHED [laravel.test 7/11] RUN useradd -ms /bin/bash --no-user-group -g 1000 -u 1337 sail 0.0s
=> CACHED [laravel.test 8/11] COPY start-container /usr/local/bin/start-container 0.0s
=> CACHED [laravel.test 9/11] COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 0.0s
=> CACHED [laravel.test 10/11] COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini 0.0s
=> CACHED [laravel.test 11/11] RUN chmod +x /usr/local/bin/start-container 0.0s
=> [laravel.test] exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:f7be71323a09907067156c23e156e0a7a3fddf584b3df27849c5e64d7a5841f9 0.0s
=> => naming to sail-8.2/app 0.0s
[+] Running 4/4
✔ Network tasker-app Created 0.0s
✔ Volume " tasker-app-mysql" Created 0.0s
✔ Container tasker-app-mysql-1 Created 1.1s
✔ Container tasker-app-laravel.test-1 Created 0.1s
Attaching to tasker-app-laravel.test-1, tasker-app-mysql-1
docker/Dockerfile
FROM php:8.2-fpm
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Set working directory
WORKDIR /var/www
#Install dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
libzip-dev \
unzip
RUN pecl install redis
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath
RUN docker-php-ext-install zip
RUN docker-php-ext-install gd
RUN docker-php-ext-configure gd
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
#RUN chmod -R 775 /var/www/storage
# Change current user to www
USER $user
# Expose port 9000 and start php-fpm server
EXPOSE 9000
* docker-compose-yaml
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.2
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.2/app
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'
networks:
- sail
depends_on:
- mysql
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'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-p${DB_PASSWORD}'
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
*composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"php": "^8.0.2",
"andreaselia/laravel-api-to-postman": "^1.13",
"cloudinary-labs/cloudinary-laravel": "^2.0",
"darkaonline/l5-swagger": "^8.4",
"guzzlehttp/guzzle": "^7.5",
"intervention/image": "^2.7",
"laracasts/flash": "^3.2",
"laravel/framework": "^9.19",
"laravel/passport": "^11.3",
"laravel/sanctum": "^3.0",
"laravel/tinker": "^2.7",
"laravelcollective/html": "^6.3",
"masbug/flysystem-google-drive-ext": "^2.2",
"mcamara/laravel-localization": "^1.7",
"opcodesio/log-viewer": "^2.3",
"spatie/laravel-activitylog": "^4.7",
"spatie/laravel-backup": "^8.1",
"spatie/laravel-permission": "^5.7",
"stancl/tenancy": "^3.6",
"symfony/filesystem": "^6.2",
"symfony/http-client": "^6.2",
"symfony/mailgun-mailer": "^6.2",
"symfony/process": "^6.2",
"yepwoo/laragine": "^2.1"
},
"require-dev": {
"barryvdh/laravel-ide-helper": "^2.13",
"fakerphp/faker": "^1.9.1",
"laravel/pint": "^1.0",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^6.1",
"phpunit/phpunit": "^9.5.10",
"spatie/laravel-ignition": "^1.0"
},
"autoload": {
"files": [
"app/Helper/Foundations.php"
],
"psr-4": {
"App\": "app/",
"Core\": "core/",
"Helper\": "app/Helper/",
"Database\Factories\": "database/factories/",
"Database\Seeders\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
},
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
},
"extra": {
"laravel": {
"dont-discover": [
"barryvdh/laravel-ide-helper"
]
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
APP_NAME=tasker
APP_ENV=local
APP_KEY=base64:mszXUCQptTroVNt5LD/1Jqksv/8hplK18i19DHTOzQA=
APP_DEBUG=true
APP_PORT=3001
SERVER_PORT=3001
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tasker_app
DB_USERNAME=root
DB_PASSWORD=
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=user
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
never used sail .... u set Port in .env to 3001 maybe u only need to set url in your .env
APP_URL="http://localhost.local"
and the domain must be for u: 'localhost.local:3001'
Please or to participate in this conversation.