-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a067041
commit 0413ebb
Showing
1 changed file
with
51 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,82 @@ | ||
# cargamos imagen de php nodo alpine super reducida | ||
|
||
# construimos una imagen partiendo del asistente de octane. Usamos una imagen base optimizada para Laravel, | ||
# que incluye PHP y todos los paquetes requeridos. | ||
# Podemos usar siempre esta para construir nuestros proyectos de laravel | ||
FROM elrincondeisma/octane:latest | ||
# Usamos una imagen base oficial de PHP 8.2 con FPM y Alpine | ||
FROM php:8.2-fpm-alpine | ||
|
||
# Actualizamos el gestor de paquetes e instalamos dependencias necesarias | ||
RUN apk add --update --no-cache \ | ||
curl \ | ||
bash \ | ||
libpng-dev \ | ||
libjpeg-turbo-dev \ | ||
libwebp-dev \ | ||
libxpm-dev \ | ||
freetype-dev \ | ||
zip \ | ||
libzip-dev \ | ||
oniguruma-dev \ | ||
autoconf \ | ||
gcc \ | ||
g++ \ | ||
make \ | ||
bash \ | ||
icu-dev \ | ||
libxml2-dev \ | ||
php8.2-mbstring \ | ||
php8.2-xml \ | ||
php8.2-curl \ | ||
php8.2-zip \ | ||
php8.2-bcmath \ | ||
php8.2-soap \ | ||
php8.2-intl \ | ||
php8.2-gd \ | ||
&& docker-php-ext-configure gd \ | ||
--with-freetype \ | ||
--with-jpeg \ | ||
--with-webp \ | ||
--with-xpm \ | ||
&& docker-php-ext-install -j$(nproc) gd \ | ||
&& docker-php-ext-install -j$(nproc) mbstring xml curl zip bcmath soap intl \ | ||
&& apk del autoconf gcc g++ make | ||
|
||
#Instalamos Composer descargando el instalador oficial y configurándolo en /usr/local/bin. | ||
RUN curl -sS https://getcomposer.org/installer | php -- \ | ||
--install-dir=/usr/local/bin --filename=composer | ||
|
||
# Copiamos Composer y Roadrunner desde sus imágenes oficiales para habilitar su uso en el contenedor. | ||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer | ||
# Copiamos Roadrunner desde su imágen oficiales para habilitar su uso en el contenedor. | ||
COPY --from=spiralscout/roadrunner:2.4.2 /usr/bin/rr /usr/bin/rr | ||
|
||
# Configuramos el directorio de trabajo principal del contenedor como /app. | ||
WORKDIR /app | ||
|
||
# Copiamos todos los archivos del proyecto local al directorio de trabajo en el contenedor. | ||
COPY . . | ||
|
||
# Eliminamos la carpeta vendor y el archivo composer.lock para evitar problemas de dependencias | ||
# causados por diferencias entre versiones de php en entornos de desarrollo y producción. | ||
RUN rm -rf /app/vendor | ||
RUN rm -rf /app/composer.lock | ||
|
||
# Actualizar y añadir PHP 8.2 en Alpine | ||
RUN apk add --update --no-cache \ | ||
php8.2 php8.2-fpm php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-bcmath php8.2-soap php8.2-intl php8.2-gd | ||
|
||
# Instalamos las dependencias necesarias para Laravel y Octane, incluyendo Roadrunner. | ||
# Instalamos las dependencias necesarias para Laravel y Octane, incluyendo Roadrunner | ||
RUN composer install | ||
RUN composer require laravel/octane spiral/roadrunner | ||
|
||
# Configuramos el entorno copiando el archivo env.example como .env, ya que este archivo puede faltar tras un pull de git. | ||
COPY .env.example .env | ||
|
||
# Creamos el directorio de logs dentro de la carpeta de storage, esencial para Laravel. | ||
RUN mkdir -p /app/storage/logs | ||
|
||
# Limpiamos las cachés de la aplicación para evitar configuraciones desactualizadas o conflictos. | ||
RUN php artisan cache:clear | ||
RUN php artisan view:clear | ||
RUN php artisan config:clear | ||
# Instalamos Octane con el servidor Swoole y configuramos su inicio para escuchar todas las direcciones IP. | ||
|
||
# Instalamos Octane con el servidor Swoole y configuramos su inicio para escuchar todas las direcciones IP | ||
RUN php artisan octane:install --server="swoole" | ||
RUN php artisan octane:start --server="swoole" --host="0.0.0.0" | ||
|
||
# Exponemos el puerto 8000 para permitir conexiones al servidor de octane porque ese está escuchando en el puerto 8000 | ||
EXPOSE 8000 | ||
EXPOSE 8000 | ||
|
||
# Comando para iniciar Octane | ||
CMD ["php", "artisan", "octane:start", "--server=swoole", "--host=0.0.0.0"] |