docker-compose.yml

루트 경로

php Tags | Docker Hub

<aside> 🧑‍💻

25-06-04 현재 8.4는 전부 Release Candidate

</aside>

services:
  php:
    build: ./docker/php
    container_name: php
    ports:
      - "8000:8000"
    expose:
      - "9000"
    volumes:
      - {앱 경로}:/home/app

  mysql:
    image: mysql:8.0
    container_name: *laravel*
    restart: always
    environment:
      MYSQL_DATABASE: *laravel*
      MYSQL_USER: *root*
      MYSQL_PASSWORD: *32213221*
      MYSQL_ROOT_PASSWORD: *3221*
    volumes:
      - ./docker/mysql/data:/var/lib/mysql:rw
      - ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
    ports:
      - "*3306*:3306"

#  nginx:
#    build: ./docker/nginx
#    container_name: nginx
#    restart: always
#    depends_on:
#      - php
#    volumes:
#      - {앱 경로}:/home/app
#      - ./docker/nginx/logs:/var/log/nginx
#      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
#    ports:
#      - "{HTTP 포트}:80"
#      - "{HTTPS 포트}:443"
version: "3.8"

services:
  app:
    image: php:8.2-fpm               # PHP 8.2
    container_name: laravel-app
    working_dir: /var/www
    volumes:
      - .:/var/www                   # 현재 프로젝트 폴더를 컨테이너에 마운트
    ports:
      - "8000:8000"                  # 포트 포워딩 (PHP 내장 서버용)
    depends_on:
      - mysql
    command: php -S 0.0.0.0:8000 -t public  # Laravel 내장 웹서버 실행

  mysql:
    image: mysql:8.0
    container_name: laravel-mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: root
      MYSQL_PASSWORD: root
    ports:
      - "3306:3306"
    volumes:
      - dbdata:/var/lib/mysql        # DB 데이터 영속화

  composer:
    image: composer:latest
    container_name: laravel-composer
    working_dir: /app
    volumes:
      - .:/app
    command: install                 # 기본 커맨드는 composer install

volumes:
  dbdata:

./docker/php/Dockerfile

FROM php:8.4.7-fpm

RUN apt-get update
RUN apt-get install -y curl

#install some base extensions
RUN apt-get install -y \
        zlib1g-dev \
        zip \
        libpng-dev \
        exiftool \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libicu-dev \
        libpq-dev \
        libxpm-dev \
        libvpx-dev \
        libzip-dev \
        mariadb-client \
        libxml2-dev \
        vim

RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
RUN docker-php-ext-install pdo_mysql exif gd bcmath zip

# Composer install
RUN curl -sS <https://getcomposer.org/installer> | php
RUN mv composer.phar /usr/local/bin/composer

WORKDIR /home/app

CMD ["php-fpm"]
출처: <https://zakkum.tistory.com/104> [WooLog:티스토리]