DEV Community

Agus Sudarmanto
Agus Sudarmanto

Posted on

Subdirectory (Relative URL)

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}
Enter fullscreen mode Exit fullscreen mode

# 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
    }
}
Enter fullscreen mode Exit fullscreen mode

2. PGAdmin

  • Relative URL link
  • Setting Postgres in Docker link

# 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
Enter fullscreen mode Exit fullscreen mode

# Caddyfile

  handle_path /pgadmin/* {
    reverse_proxy pgadmin:80 {
      header_up X-Script-Name /pgadmin
      header_up X-Scheme {scheme}
    }
  }
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

# Caddyfile

  handle_path /phpmyadmin/* {
    reverse_proxy phpmyadmin:80
  }
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

# Caddyfile

  handle_path /laravel/* {
      root * /var/www/html/public
      try_files {path} {path}/ /index.php?{query}
      php_fastcgi laravel:9000
      file_server
  }
Enter fullscreen mode Exit fullscreen mode

# {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');
    });
});

Enter fullscreen mode Exit fullscreen mode

[TODO]

GitLab

docker exec -it gitlab gitlab-ctl reconfigure
Enter fullscreen mode Exit fullscreen mode

Top comments (0)