Thursday, October 22, 2026

Docker php-apache 8.5

#create

docker compose up -d --build

or

docker compose build --no-cache

docker compose up -d

#remove rest

docker compose down -v

---------------------------------------

# start

docker compose start

#shutdown

docker compose stop

#Bash

docker exec -it php_web bash

>>>>NOTE

update docker-compose.yml  need    up --build

show log on terminal                         up -d

remove image                                use down -v

remove container                           use down

-----------------------------------------------------------------------------

#file1 Dockerfile

 FROM php:8.5-apache


RUN apt-get update && apt-get install -y \

    git unzip zip libzip-dev libpng-dev libjpeg-dev libfreetype6-dev libicu-dev freetds-dev freetds-bin \

    && docker-php-ext-configure gd --with-freetype --with-jpeg \

    && docker-php-ext-install pdo_mysql mysqli gd zip intl \

    && docker-php-ext-configure pdo_dblib --with-libdir=lib/$(dpkg-architecture -q DEB_HOST_MULTIARCH) \

    && docker-php-ext-install pdo_dblib \

    && rm -rf /var/lib/apt/lists/*


RUN a2enmod rewrite


# Composer

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer


WORKDIR /var/www/html


# FPDF + FPDI

RUN composer require chillerlan/php-qrcode setasign/fpdf setasign/fpdi --no-interaction --prefer-dist

---------------------------------------------------------------------------------------------------

#file2 docker-compose.yml


services:

  web:

    build: .

    container_name: php_web

    ports:

      - "80:80"

    volumes:

      - ./src:/var/www/html

    depends_on:

      - db

    environment:

      DB_HOST: db

      DB_DATABASE: ${MYSQL_DATABASE}

      DB_USERNAME: ${MYSQL_USER}

      DB_PASSWORD: ${MYSQL_PASSWORD}

      TDSVER: "7.0"


  db:

    image: mysql:latest

    container_name: php_mysql

    restart: unless-stopped

    ports:

      - "3306:3306"

    environment:

      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE}

      MYSQL_USER: ${MYSQL_USER}

      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    volumes:

      - db_data:/var/lib/mysql


  phpmyadmin:

    image: phpmyadmin:latest

    container_name: php_pma

    ports:

      - "8080:80"

    environment:

      PMA_HOST: db

    depends_on:

      - db


volumes:

  db_data:


-------------------------------------------------------------------------
#file3 .env

MYSQL_ROOT_PASSWORD=rootpass

MYSQL_DATABASE=app_db

MYSQL_USER=app_user

MYSQL_PASSWORD=app_pass

---------------------------------------------------------------------------