diff --git a/.env b/.env index fdcedc4..c421d87 100644 --- a/.env +++ b/.env @@ -15,29 +15,6 @@ # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### -APP_ENV=${APP_ENV:-dev} +APP_ENV=${APP_ENV:-prod} APP_SECRET=31180fc3aa11818328106d014be0108c -#OGGIT_URL=${OGGIT_URL} -#OGGIT_URL=env(OGGIT_URL) -OGGIT_URL=(echo $OGGIT_URL) -#OGGIT_URL=http://127.0.0.1:5000 -###< symfony/framework-bundle ### -###> doctrine/doctrine-bundle ### -# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url -# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml -# -# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" -# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4" DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" -###< doctrine/doctrine-bundle ### - -###> symfony/messenger ### -# Choose one of the transports below -# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages -# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages -MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 -###< symfony/messenger ### - -###> symfony/mailer ### -# MAILER_DSN=null://null -###< symfony/mailer ### diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..832c3e3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,67 @@ +FROM ubuntu:22.04 + +# Instalar Nginx +RUN apt-get update && apt-get install -y nginx software-properties-common curl unzip supervisor +RUN add-apt-repository ppa:ondrej/php && apt-get update + +# Exponer el puerto 80 y 443 para HTTP +EXPOSE 80 +EXPOSE 443 + +RUN ln -sf /dev/stdout /var/log/nginx/access.log \ + && ln -sf /dev/stderr /var/log/nginx/error.log \ + && ln -sf /dev/stderr /var/log/php8.2-fpm.log + + +# Copia la configuración personalizada de Nginx al contenedor +COPY ./docker/nginx/default.conf /etc/nginx/sites-available/oggit + +# Borrar default.conf en nginx en caso de que exista +RUN rm /etc/nginx/sites-enabled/default + +# Crear un enlace simbólico a sites-enabled +RUN ln -s /etc/nginx/sites-available/oggit /etc/nginx/sites-enabled/oggit + +# Install php 8.2 and php-fpm + +RUN apt-get install -y php8.2 php8.2-cli php8.2-fpm php8.2-xml php8.2-curl + +# Install composer + +RUN curl -sS https://getcomposer.org/installer -o composer-setup.php && php composer-setup.php --install-dir=/usr/local/bin --filename=composer + + +# Crear directorio de trabajo +RUN mkdir /opt/oggit +RUN mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www + + +WORKDIR /opt/oggit +# Copy the project to /opt/oggit +COPY src/ src/ +COPY config/ config/ +COPY composer.json . + + + + + +# Install dependencies +RUN composer install +COPY .env .env +RUN chown -R www-data:www-data /opt/oggit + +# Configure Supervisor +COPY docker/supervisord/supervisor.conf /etc/supervisor/conf.d/supervisor.conf +# Iniciar Nginx +COPY docker/entrypoint/entrypoint.sh /entrypoint.sh + +# Cambiar los permisos de entrypoint.sh +RUN chmod +x /entrypoint.sh +RUN mkdir -p /run/php && chown -R www-data:www-data /run/php + + +# Set entrypoint +CMD ["/entrypoint.sh"] + + diff --git a/docker/entrypoint/entrypoint.sh b/docker/entrypoint/entrypoint.sh new file mode 100644 index 0000000..a03ea64 --- /dev/null +++ b/docker/entrypoint/entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +echo OGGIT_URL=$OGGIT_URL >> /opt/oggit/.env +# mkdir -p /run/php && chown -R www-data:www-data /run/php +# printf "\n\nStarting PHP 8.2 daemon...\n\n" +# php-fpm8.2 --daemonize + +# printf "Starting Nginx...\n\n" +# set -e +# nginx -g 'daemon off;' + +/usr/bin/supervisord diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 0000000..0e73e80 --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,42 @@ +server { + listen 80; + server_name localhost; # Reemplaza 'localhost' por la IP del servidor si es necesario + + # Raíz del documento para el proyecto Symfony + root /opt/oggit/public; + + # Bloque para manejar las solicitudes a /oggit + location /oggit { + try_files $uri $uri/ /index.php?$query_string; + # Aumentar el tiempo de espera por el install oglive + proxy_read_timeout 600; + proxy_connect_timeout 600; + proxy_send_timeout 600; + send_timeout 600; + } + + # Bloque para manejar las solicitudes a index.php + location ~ ^/index.php(/|$) { + include fastcgi_params; + fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Asegúrate de que esto sea correcto + fastcgi_split_path_info ^(.+\.php)(/.*)$; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param DOCUMENT_ROOT $document_root; + internal; + } + + # Bloque para devolver 404 en cualquier solicitud a archivos PHP que no sean index.php + location ~ \.php$ { + return 404; + } + + # Logs de error y acceso para el proyecto Symfony + error_log /dev/stdout info; + access_log /dev/stdout; + + + location /api/doc { + try_files $uri /index.php?$query_string; + } +} diff --git a/docker/supervisord/supervisor.conf b/docker/supervisord/supervisor.conf new file mode 100644 index 0000000..852061e --- /dev/null +++ b/docker/supervisord/supervisor.conf @@ -0,0 +1,21 @@ +[supervisord] +nodaemon=true + +[program:nginx] +command=nginx -g 'daemon off;' +process_name=%(program_name)s_%(process_num)02d +numprocs=1 +autostart=true +autorestart=false +startsecs=0 +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 + +[program:php-fpm] +command=php-fpm8.2 -F +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +environment=PATH=/opt/mypath:%(ENV_PATH)s,OGGIT_URL=%(ENV_OGGIT_URL)s