Compare commits

...

1 Commits

Author SHA1 Message Date
280e8354f1 build(docker): optimize image size and security
- add mysql client binaries for database operations
- reduce php extensions to production essentials
- bind mysql and phpmyadmin to localhost only
- replace php-fpm.conf with php.ini for upload limits
2026-03-21 03:39:34 +03:00
4 changed files with 18 additions and 9 deletions

View File

@@ -1,3 +1,3 @@
* *
!docker/entrypoint.sh !docker/entrypoint.sh
!docker/php-fpm.conf !docker/php.ini

View File

@@ -26,11 +26,10 @@ services:
volumes: volumes:
- ./:/var/www - ./:/var/www
mysql: mysql:
image: mysql:8.0 image: mysql:8.0
ports: ports:
- "${DB_PORT:-3306}:3306" - "127.0.0.1:${DB_PORT:-3306}:3306"
environment: environment:
- MYSQL_DATABASE=${DB_DATABASE} - MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME} - MYSQL_USER=${DB_USERNAME}
@@ -44,9 +43,11 @@ services:
image: phpmyadmin:latest image: phpmyadmin:latest
restart: unless-stopped restart: unless-stopped
ports: ports:
- "8080:80" - "127.0.0.1:8080:80"
environment: environment:
- PMA_HOST=mysql - PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=${DB_ROOT_PASSWORD}
- PMA_PORT=${DB_PORT:-3306} - PMA_PORT=${DB_PORT:-3306}
- UPLOAD_LIMIT=100M - UPLOAD_LIMIT=100M
depends_on: depends_on:

View File

@@ -1,11 +1,15 @@
FROM mysql:8.0 AS mysql
FROM php:8.3-fpm FROM php:8.3-fpm
COPY --from=mysql /usr/bin/mysql /usr/bin/mysql
COPY --from=mysql /usr/bin/mysqldump /usr/bin/mysqldump
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
libpng-dev libonig-dev libxml2-dev libzip-dev \ libonig-dev \
zip unzip git gosu \ gosu netcat-traditional \
netcat-traditional \ && docker-php-ext-install pdo_mysql mbstring \
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip \ && apt-get clean && rm -rf /var/lib/apt/lists/*
&& apt-get clean && rm -rf /var/lib/apt/lists/*
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
@@ -26,6 +30,8 @@ RUN if getent group ${GID}; then \
RUN sed -i "s/user = www-data/user = www/g" /usr/local/etc/php-fpm.d/www.conf && \ RUN sed -i "s/user = www-data/user = www/g" /usr/local/etc/php-fpm.d/www.conf && \
sed -i "s/group = www-data/group = $group_name/g" /usr/local/etc/php-fpm.d/www.conf sed -i "s/group = www-data/group = $group_name/g" /usr/local/etc/php-fpm.d/www.conf
COPY --chmod=644 ./docker/php.ini /usr/local/etc/php/conf.d/laravel.ini
COPY ./docker/entrypoint.sh /usr/local/bin/ COPY ./docker/entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh

2
docker/php.ini Normal file
View File

@@ -0,0 +1,2 @@
post_max_size = 20M
upload_max_filesize = 20M