php:8.3.20-bullseye dev env

this is also works for laravel

FROM php:8.3.20-bullseye

RUN apt-get update && apt-get install -y \
        curl \ 
        libpq-dev \
        git \
        unzip
RUN docker-php-ext-install pdo pdo_pgsql

COPY . /app
WORKDIR /app

RUN curl -sS https://getcomposer.org/installer -o composer-setup.php \
        && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
        && rm composer-setup.php

RUN composer install

CMD [ "php", "-S", "0.0.0.0:10302", "-t", "public" ]

compose.yml

volumes:
  storage:
  db_data:

networks:
  veth_network:
    driver: bridge

services:
  google_sso:
    image: php:8.3.20-bullseye
    build:
      context: .
      dockerfile: dev.backend.Dockerfile
    environment:
      - docker=true
      - DB_HOST=pgsql_db
      - DB_PORT=5432
      - DB_USERNAME=postgres
      - DB_PASSWORD=<PASSWD>
      - DB_DATABASE=google_sso_dev
      - G_SSO_NAME=google-sso-login
      - G_SSO_CLIENT_ID=ABC
      - G_SSO_CLIENT_SECRET=DEF
      - G_SSO_REDIRECT_URI=http://localhost:10302/auth/callback
    ports:
      - "10302:10302"
    networks:
      - veth_network
    volumes:
      - .:/app
      - storage:/app/storage
    depends_on:
      - pgsql_db

  pgsql_db:
    image: postgres:17.5-bullseye
    restart: always
    shm_size: 128mb
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=<PASSWD>
      - POSTGRES_DB=google_sso_dev
    networks:
      - veth_network
    volumes:
      - db_data:/var/lib/postgresql/data
  
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    networks:
      - veth_network
    depends_on:
      - pgsql_db

CATATAN unik: ketika ping pgsql_db dari xxx container, ia otomatis resolve dns nya.