feat(docker): update Docker configuration for Arvan Cloud registry and add API documentation generation
This commit is contained in:
30
Dockerfile
30
Dockerfile
@@ -1,12 +1,13 @@
|
||||
# syntax=docker/dockerfile:1.7
|
||||
# syntax=docker.arvancloud.ir/docker/dockerfile:1.7
|
||||
|
||||
ARG DOCKER_REGISTRY=docker.arvancloud.ir
|
||||
ARG PHP_VERSION=8.4
|
||||
|
||||
FROM composer:2 AS composer
|
||||
|
||||
FROM node:24-alpine AS assets
|
||||
FROM ${DOCKER_REGISTRY}/node:24-alpine AS assets
|
||||
WORKDIR /app
|
||||
|
||||
RUN sed -i 's|https://dl-cdn.alpinelinux.org|https://mirror.arvancloud.ir/alpine|g' /etc/apk/repositories
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
@@ -15,14 +16,20 @@ COPY public ./public
|
||||
COPY vite.config.js ./
|
||||
RUN npm run build
|
||||
|
||||
FROM php:${PHP_VERSION}-fpm-bookworm AS app
|
||||
ARG DOCKER_REGISTRY
|
||||
ARG PHP_VERSION
|
||||
FROM ${DOCKER_REGISTRY}/php:${PHP_VERSION}-fpm-bookworm AS app
|
||||
WORKDIR /var/www/html
|
||||
|
||||
ENV COMPOSER_ALLOW_SUPERUSER=1
|
||||
|
||||
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/install-php-extensions
|
||||
COPY docker/php/install-php-extensions /usr/local/bin/install-php-extensions
|
||||
COPY docker/apt/configure-arvan-mirror.sh /tmp/configure-arvan-mirror.sh
|
||||
|
||||
RUN apt-get update \
|
||||
RUN chmod +x /tmp/configure-arvan-mirror.sh \
|
||||
&& /tmp/configure-arvan-mirror.sh \
|
||||
&& rm /tmp/configure-arvan-mirror.sh \
|
||||
&& apt-get -o Acquire::Check-Valid-Until=false update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
default-mysql-client \
|
||||
@@ -38,12 +45,12 @@ RUN apt-get update \
|
||||
xml \
|
||||
xmlreader \
|
||||
zip \
|
||||
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
|
||||
&& apt-get purge -y --auto-remove \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY docker/php/php.ini /usr/local/etc/php/conf.d/99-production.ini
|
||||
COPY docker/php/opcache.ini /usr/local/etc/php/conf.d/99-opcache.ini
|
||||
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||||
|
||||
COPY composer.json composer.lock ./
|
||||
RUN composer install \
|
||||
@@ -59,12 +66,14 @@ COPY --from=assets /app/public/build ./public/build
|
||||
|
||||
RUN composer dump-autoload --no-dev --optimize --no-scripts \
|
||||
&& php artisan package:discover --ansi \
|
||||
&& APP_KEY=base64:dGVtcG9yYXJ5a2V5Zm9yZG9ja2VyYnVpbGRvbmx5= php artisan l5-swagger:generate --no-interaction \
|
||||
&& mkdir -p \
|
||||
storage/app/public \
|
||||
storage/framework/cache/data \
|
||||
storage/framework/sessions \
|
||||
storage/framework/views \
|
||||
storage/logs \
|
||||
storage/api-docs \
|
||||
bootstrap/cache \
|
||||
&& rm -rf public/storage \
|
||||
&& ln -s ../storage/app/public public/storage \
|
||||
@@ -78,7 +87,10 @@ EXPOSE 9000
|
||||
ENTRYPOINT ["docker-entrypoint"]
|
||||
CMD ["php-fpm"]
|
||||
|
||||
FROM nginx:1.27-alpine AS nginx
|
||||
ARG DOCKER_REGISTRY
|
||||
FROM ${DOCKER_REGISTRY}/nginx:1.27-alpine AS nginx
|
||||
|
||||
RUN sed -i 's|https://dl-cdn.alpinelinux.org|https://mirror.arvancloud.ir/alpine|g' /etc/apk/repositories
|
||||
|
||||
COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --from=app /var/www/html/public /var/www/html/public
|
||||
|
||||
Reference in New Issue
Block a user