1. Caddy
# Docker Compose:
caddy:
image: caddy:2
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./config/caddy/Caddyfile:/etc/caddy/Caddyfile
- ./data/caddy:/data
- ./log/caddy:/var/log/caddy
- ./config/php:/usr/local/etc/php
- ./config/hello:/srv/hello
- ./src/laravel:/srv/laravel
depends_on:
- laravel
- phpmyadmin
- pgadmin
- gitlab
environment:
- DOMAIN=${DOMAIN}
# Caddyfile
{
email admin@{$DOMAIN}
log {
output file /var/log/caddy/access.log
level INFO
}
}
{$DOMAIN} {
root * /srv
encode gzip zstd
handle {
respond "Service not found" 404
}
}
2. PGAdmin
# Docker Compose:
postgres:
image: postgres:15
container_name: postgres
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
environment:
- PGADMIN_DEFAULT_EMAIL=hyuken@gmail.com
- PGADMIN_DEFAULT_PASSWORD=admin
depends_on:
- postgres
# Caddyfile
handle_path /pgadmin/* {
reverse_proxy pgadmin:80 {
header_up X-Script-Name /pgadmin
header_up X-Scheme {scheme}
}
}
3. PHPMyAdmin
# Docker Compose:
mysql:
image: mysql:latest
container_name: mysql
volumes:
- ./data/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
- PMA_HOST=mysql
- PMA_USER=${MYSQL_USER}
- PMA_PASSWORD=${MYSQL_PASSWORD}
depends_on:
- mysql
# Caddyfile
handle_path /phpmyadmin/* {
reverse_proxy phpmyadmin:80
}
4. Laravel
# Docker Compose:
laravel:
image: php:8.4-fpm
container_name: laravel
working_dir: /var/www/html
volumes:
- ./src/laravel:/var/www/html
- ./log/laravel:/var/log/laravel
- ./config/php/php.ini:/usr/local/etc/php/php.ini
environment:
- APP_ENV=local
- APP_DEBUG=true
- DB_CONNECTION=mysql
- DB_HOST=mysql
- DB_PORT=3306
- DB_DATABASE=${MYSQL_DATABASE}
- DB_USERNAME=${MYSQL_USER}
- DB_PASSWORD=${MYSQL_PASSWORD}
depends_on:
- mysql
# Caddyfile
handle_path /laravel/* {
root * /var/www/html/public
try_files {path} {path}/ /index.php?{query}
php_fastcgi laravel:9000
file_server
}
# {laravel-apps-folder}/routes/web.php
<?php
use Illuminate\Support\Facades\Route;
// handle `laravel` sub directory
Route::prefix('laravel')->group(function () {
Route::get('/', function () {
return view('welcome');
});
});
[TODO]
GitLab
docker exec -it gitlab gitlab-ctl reconfigure
Top comments (0)