работа с контейнерами
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM php:8.3-fpm-bookworm AS php-base
|
||||
|
||||
ARG APP_UID=1000
|
||||
ARG APP_GID=1000
|
||||
|
||||
ENV APP_ENV=production \
|
||||
APP_DEBUG=false \
|
||||
COMPOSER_ALLOW_SUPERUSER=1
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
libfcgi-bin \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libzip-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j"$(nproc)" \
|
||||
bcmath \
|
||||
exif \
|
||||
gd \
|
||||
intl \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
sockets \
|
||||
zip \
|
||||
&& apt-mark manual \
|
||||
libfcgi-bin \
|
||||
libfreetype6 \
|
||||
libicu72 \
|
||||
libjpeg62-turbo \
|
||||
libpng16-16 \
|
||||
libzip4 \
|
||||
&& apt-get purge -y --auto-remove \
|
||||
libfreetype6-dev \
|
||||
libicu-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
libzip-dev \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& groupadd --gid "$APP_GID" app \
|
||||
&& useradd --uid "$APP_UID" --gid "$APP_GID" --create-home --shell /usr/sbin/nologin app
|
||||
|
||||
COPY docker/production/php.ini /usr/local/etc/php/conf.d/99-production.ini
|
||||
COPY docker/production/php-fpm-pool.conf /usr/local/etc/php-fpm.d/zz-production.conf
|
||||
|
||||
FROM php-base AS vendor
|
||||
|
||||
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer
|
||||
COPY . .
|
||||
|
||||
RUN composer install \
|
||||
--no-dev \
|
||||
--prefer-dist \
|
||||
--optimize-autoloader \
|
||||
--no-interaction \
|
||||
--no-progress \
|
||||
&& composer clear-cache
|
||||
|
||||
FROM node:24-bookworm-slim AS frontend
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --no-audit --no-fund
|
||||
|
||||
COPY resources ./resources
|
||||
COPY public ./public
|
||||
COPY vite.config.* ./
|
||||
|
||||
ARG VITE_APP_NAME=Moonwell
|
||||
ENV VITE_APP_NAME="$VITE_APP_NAME"
|
||||
|
||||
RUN npm run build
|
||||
|
||||
FROM php-base AS app
|
||||
|
||||
COPY --from=vendor --chown=app:app /var/www/html /var/www/html
|
||||
COPY --from=frontend --chown=app:app /var/www/html/public/build /var/www/html/public/build
|
||||
|
||||
RUN mkdir -p \
|
||||
bootstrap/cache \
|
||||
storage/app/public \
|
||||
storage/framework/cache/data \
|
||||
storage/framework/sessions \
|
||||
storage/framework/views \
|
||||
storage/logs \
|
||||
&& chown -R app:app bootstrap/cache storage
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
CMD ["php-fpm", "--nodaemonize"]
|
||||
|
||||
FROM nginx:1.27-alpine AS web
|
||||
|
||||
ARG APP_UID=1000
|
||||
ARG APP_GID=1000
|
||||
|
||||
RUN addgroup -S -g "$APP_GID" app \
|
||||
&& adduser -S -D -H -u "$APP_UID" -G app app
|
||||
|
||||
COPY docker/production/nginx.conf /etc/nginx/nginx.conf
|
||||
COPY --from=vendor --chown=app:app /var/www/html/public /var/www/html/public
|
||||
COPY --from=frontend --chown=app:app /var/www/html/public/build /var/www/html/public/build
|
||||
|
||||
USER app
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
Reference in New Issue
Block a user