Skip to content

Commit

Permalink
feat: fix
Browse files Browse the repository at this point in the history
  • Loading branch information
ThePushMaker committed Dec 29, 2024
1 parent a067041 commit 0413ebb
Showing 1 changed file with 51 additions and 14 deletions.
65 changes: 51 additions & 14 deletions Dockerfile
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"]

0 comments on commit 0413ebb

Please sign in to comment.