From 64544ddc1a8b5b824e6ec3aa4ea7c1a164eea1df Mon Sep 17 00:00:00 2001 From: Sleon4 Date: Sun, 7 Jun 2026 16:13:43 -0500 Subject: [PATCH] ci: Nginx support has been added --- Dockerfile | 114 ------------------ config/docker/nginx/local/Dockerfile | 12 ++ .../nginx/local/certs/localhost-key.pem | 28 +++++ config/docker/nginx/local/certs/localhost.pem | 23 ++++ config/docker/nginx/local/default.conf | 37 ++++++ config/docker/php/local/Dockerfile | 111 +++++++++++++++++ docker-compose.yml | 72 +++++++++-- 7 files changed, 272 insertions(+), 125 deletions(-) delete mode 100644 Dockerfile create mode 100644 config/docker/nginx/local/Dockerfile create mode 100644 config/docker/nginx/local/certs/localhost-key.pem create mode 100644 config/docker/nginx/local/certs/localhost.pem create mode 100644 config/docker/nginx/local/default.conf create mode 100644 config/docker/php/local/Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index d315969..0000000 --- a/Dockerfile +++ /dev/null @@ -1,114 +0,0 @@ -FROM php:8.5-apache - -ARG DEBIAN_FRONTEND=noninteractive -# ---------------------------------------------------------------------------------------------------------------------- -USER root - -# Add User ------------------------------------------------------------------------------------------------------------- -RUN useradd -m lion && echo 'lion:lion' | chpasswd && usermod -aG sudo lion && usermod -s /bin/bash lion -# Dependencies --------------------------------------------------------------------------------------------------------- -RUN apt-get update -y \ - && apt-get install -y sudo nano zsh git curl wget unzip cron sendmail golang-go systemctl ca-certificates \ - && apt-get install -y libpq-dev libpng-dev libzip-dev zlib1g-dev libonig-dev libevent-dev libssl-dev \ - && apt-get clean \ - && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ - && rm -rf /var/lib/apt/lists/* -# Electron-Vite Dependencies ------------------------------------------------------------------------------------------- -# RUN apt-get update -y \ - # && apt-get install -y libnss3 mesa-utils libgl1-mesa-glx mesa-utils-extra libx11-xcb1 libxcb-dri3-0 libxtst6 \ - # && apt-get install -y libasound2 libgtk-3-0 libcups2 libatk-bridge2.0 libatk1.0 libcanberra-gtk-module \ - # && apt-get install -y libcanberra-gtk3-module dbus libdbus-1-3 dbus-user-session \ - # && apt-get clean \ - # && rm -rf /var/lib/apt/lists/* -# Configure PHP-Extensions --------------------------------------------------------------------------------------------- -RUN pecl install ev redis xdebug \ - && docker-php-ext-install mbstring gd zip pdo pdo_mysql pdo_pgsql \ - && docker-php-ext-enable xdebug redis gd zip pdo_pgsql -# Configure Xdebug ----------------------------------------------------------------------------------------------------- -RUN echo "xdebug.mode=develop,coverage,debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.remote_connect_back=off" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.idekey=docker" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.log=/dev/stdout" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.log_level=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ - && echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini -# Apache config -------------------------------------------------------------------------------------------------------- -RUN a2enmod rewrite ssl \ - && echo "ServerName localhost" >> /etc/apache2/apache2.conf \ - && sed -i "s|SSLEngine on|SSLEngine on\nSSLVerifyClient none|g" /etc/apache2/sites-available/default-ssl.conf \ - && sed -i "s|DocumentRoot /var/www/html|DocumentRoot /var/www/html/public|g" /etc/apache2/sites-available/000-default.conf \ - && sed -i "s|||g" /etc/apache2/apache2.conf \ - && sed -i "s|SSLProtocol all|SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1|g" /etc/apache2/mods-enabled/ssl.conf \ - && sed -i "s|SSLHonorCipherOrder on|SSLHonorCipherOrder on\nSSLCipherSuite HIGH:!aNULL:!MD5|g" /etc/apache2/mods-enabled/ssl.conf \ - && sed -i "s|www-data|lion|g" /etc/apache2/envvars \ - && openssl req -x509 -nodes -days 365 -newkey rsa:4096 \ - -keyout /etc/ssl/private/apache-selfsigned.key \ - -out /etc/ssl/certs/apache-selfsigned.crt \ - -subj "/C=US/ST=State/L=City/O=Lion-Packages/OU=Lion/CN=localhost/emailAddress=root@dev.com" \ - && cp /etc/ssl/certs/apache-selfsigned.crt /usr/local/share/ca-certificates/selfsigned.crt \ - && update-ca-certificates \ - && echo "\n\ - \n\ - ServerName localhost \n\ - DocumentRoot /var/www/html/public \n\ - SSLEngine on \n\ - SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt \n\ - SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key \n\ - ErrorLog \${APACHE_LOG_DIR}/error.log \n\ - CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ - \n\ -\n\ - \n\ - ServerName localhost \n\ - DocumentRoot /var/www/html/public \n\ - SSLEngine on \n\ - SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt \n\ - SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key \n\ - ErrorLog \${APACHE_LOG_DIR}/error.log \n\ - CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ - \n\ - " > /etc/apache2/sites-available/default-ssl.conf \ - && a2ensite default-ssl -# ---------------------------------------------------------------------------------------------------------------------- -USER lion - -SHELL ["/bin/bash", "--login", "-i", "-c"] - -# Install nvm, Node.js and npm ----------------------------------------------------------------------------------------- -RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash \ - && source /home/lion/.bashrc \ - && nvm install 24 \ - && npm install -g npm - -# Install OhMyZsh ------------------------------------------------------------------------------------------------------ -RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)" -# ---------------------------------------------------------------------------------------------------------------------- -USER root - -SHELL ["/bin/bash", "--login", "-c"] - -# Install logo-ls ------------------------------------------------------------------------------------------------------ -RUN ARCH=$(uname -m) && \ - if [ "$ARCH" = "x86_64" ]; then \ - wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_amd64.deb; \ - elif [ "$ARCH" = "aarch64" ]; then \ - wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_arm64.deb; \ - else \ - echo "Unsupported architecture: $ARCH" && exit 1; \ - fi && \ - dpkg -i logo-ls_*.deb && \ - rm logo-ls_*.deb && \ - curl https://raw.githubusercontent.com/UTFeight/logo-ls-modernized/master/INSTALL | bash -# Add configuration in .zshrc ------------------------------------------------------------------------------------------ -RUN echo 'export NVM_DIR="$HOME/.nvm"' >> /home/lion/.zshrc \ - && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/lion/.zshrc \ - && echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> /home/lion/.zshrc \ - && echo 'alias ls="logo-ls"' >> /home/lion/.zshrc \ - && source /home/lion/.zshrc -# Copy Data ------------------------------------------------------------------------------------------------------------ -COPY . . -# Permissions ---------------------------------------------------------------------------------------------------------- -RUN chown -R lion:lion /var/www/html/public \ - && chmod -R u=rwX,go=rX /var/www/html/public diff --git a/config/docker/nginx/local/Dockerfile b/config/docker/nginx/local/Dockerfile new file mode 100644 index 0000000..59f6ab2 --- /dev/null +++ b/config/docker/nginx/local/Dockerfile @@ -0,0 +1,12 @@ +FROM nginx:stable-alpine +# ---------------------------------------------------------------------------------------------------------------------- +# Copy files +# ---------------------------------------------------------------------------------------------------------------------- +COPY config/docker/nginx/local/default.conf /etc/nginx/conf.d/default.conf + +COPY config/docker/nginx/local/certs /etc/nginx/certs +# ---------------------------------------------------------------------------------------------------------------------- +# Permissions +# ---------------------------------------------------------------------------------------------------------------------- +RUN chmod 600 /etc/nginx/certs/localhost-key.pem && \ + chmod 644 /etc/nginx/certs/localhost.pem diff --git a/config/docker/nginx/local/certs/localhost-key.pem b/config/docker/nginx/local/certs/localhost-key.pem new file mode 100644 index 0000000..4d8aee3 --- /dev/null +++ b/config/docker/nginx/local/certs/localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDbMPJnz68NnFEd +P4DStZWJ/GagwOS5wkJavlqxPF7qjqqbAXUhPtGJKmGnrxumXzAbtMc+ZvjtircM +BaIP08lMJ+60W3vcuOHJoagAtQ5foabhEEiC++9cMYwcnIhn1vVYDQvo0cDpU3L/ +9ZfnYnxwHmfviVy27GEta5NIGqMmKD1wgQ3QqVmoQaNUpG55cWntm2wfxHVglr9f +Ceov8efz4umprS2H49P2OZphhBSx4FF84Eay0o6OOK299+vj0gp9f1sdjaJ6aISZ +WVCufaH1BLQk2WYOjH7lNKJZpKuS7akIiP7U8+Y7MVbmo6/8axW7kLyCKBZuOsKf +jvWGKYjLAgMBAAECggEAC0+tUroe+H7WmMHMLhN80hAaY7VQmF1z+ybTm03YQBZ4 +q2MZ3ktVmNR9EaAxtxY2b1eW6Jt7wRZld9Nal6KAQtPUt6346F0KGdOjzdWKFllL +OVYTx96kbYeJCXjyeRlYs+CIes1IPUI3LwpHeoNUlJydFHlsNWxhX2yrvw7Q2Ikm +ntbT43YaCoX5G+Y0+b/pMymItwktgdHYf4sxuwKFC8GaaW3PTLDAFAsawZwUHeWh +RhD+/QWfzRYdEM82VqJk5MO3eTcPV62WxXDm1n4BBSfAAAcH0AI75HZUOI3pbLZ/ +WvJNR5OqscKOOsiTL81jORUERrJiWDfTjBySVhJH8QKBgQDwwa/QJIzPmkTu7EGM +4eaEle2/f+6sV2DIClmLoGl0IHA2Ub/gUSnDJy8f5AMFQm9ULhrzkFaroux916Vy +sca1no/Al5fxmr6V+qJH1arBRECeRowB8SfE55ubaNKb/9wlYIkY6Dov5Fn30Cjc +g3OD5DqbCni4ocpDoNwc/esQfQKBgQDpEbdzF0vPfsV5rZ+Fs6JKFjj2TtmHaKKj +z1Z/sxc1brmJyNjPEXsuRQkOMUq7anb02lTp6uCmTzildarMUe6abCLoHZyhrck8 +WzhM3ehCtAnJ4zhcKfSN4i3xYGJ8+2G+5EdWQ9qx10bLiGpTq8pgwV3mcnzf8rpk +WuLNbpzI5wKBgQCm0W3iyRCQYJJXAnjBB13UjJY51Ikp/TlgIlu9dZ7cCgX2fVp4 +MYTAZgwvCqxVHp1JNNET5vVG5BL9d0h6WlgXTBDLH772d4SLIykCoTg5xfMIOFWW +muQ1eU3GtzEHSpfdhjA4g+CdgpocLa3CbYrC3ocFGpJfTCt8BJ+/rukLeQKBgCtM +RkdUSZonk+oR7jO5dmnLDRP8+/5i2uwRpaEdlS8w/bjyHg0B0196Jb+EOrzsf2Ln +eKToJIng58YdQPiqM+huNGHotmN21I6o56GoC/DwX20pEBxXEv6UyTIxVLqhPLxo +zjPhcSxesOE423/lxzgIVDhuhnJYNnZUSBQf+3J7AoGBAN8CcgXG+nniVifiNzjk +QuFV+R7SJG/2+r3xM/Roa2T+dLGrMV1otyFLGmUEYl9DTxJeZQVk//rhCyCFrj93 +Xvig4pDksWwbMzpJrtXZ+Ef2Ra9RR/oMzivund1OUyLe46mx0KAa/NtVggwUN4e2 +Ai9MEY/1sww9AhiUG7ZpCugL +-----END PRIVATE KEY----- diff --git a/config/docker/nginx/local/certs/localhost.pem b/config/docker/nginx/local/certs/localhost.pem new file mode 100644 index 0000000..ceeffa2 --- /dev/null +++ b/config/docker/nginx/local/certs/localhost.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID6jCCAtKgAwIBAgIUPRxvb8GNv/u4R5iNOTzkwSrgl/wwDQYJKoZIhvcNAQEL +BQAwczELMAkGA1UEBhMCQ08xFTATBgNVBAgMDEN1bmRpbmFtYXJjYTEPMA0GA1UE +BwwGQm9nb3RhMRYwFAYDVQQKDA1MaW9uLVBhY2thZ2VzMRAwDgYDVQQLDAdEZXZU +ZWFtMRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMjUxMTAyMTY1NzA5WhcNMzUxMDMx +MTY1NzA5WjBzMQswCQYDVQQGEwJDTzEVMBMGA1UECAwMQ3VuZGluYW1hcmNhMQ8w +DQYDVQQHDAZCb2dvdGExFjAUBgNVBAoMDUxpb24tUGFja2FnZXMxEDAOBgNVBAsM +B0RldlRlYW0xEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBANsw8mfPrw2cUR0/gNK1lYn8ZqDA5LnCQlq+WrE8XuqOqpsB +dSE+0YkqYaevG6ZfMBu0xz5m+O2KtwwFog/TyUwn7rRbe9y44cmhqAC1Dl+hpuEQ +SIL771wxjByciGfW9VgNC+jRwOlTcv/1l+difHAeZ++JXLbsYS1rk0gaoyYoPXCB +DdCpWahBo1Skbnlxae2bbB/EdWCWv18J6i/x5/Pi6amtLYfj0/Y5mmGEFLHgUXzg +RrLSjo44rb336+PSCn1/Wx2NonpohJlZUK59ofUEtCTZZg6MfuU0olmkq5LtqQiI +/tTz5jsxVuajr/xrFbuQvIIoFm46wp+O9YYpiMsCAwEAAaN2MHQwHQYDVR0OBBYE +FCuLQr/8KMaOFp7JioKEP13uSmgYMB8GA1UdIwQYMBaAFCuLQr/8KMaOFp7JioKE +P13uSmgYMA8GA1UdEwEB/wQFMAMBAf8wIQYDVR0RBBowGIIJbG9jYWxob3N0ggtu +Z2lueC1sb2NhbDANBgkqhkiG9w0BAQsFAAOCAQEAWaR2uxAkF29WSDX0YLj12oHw +7Ysoe7EXF6EvJ13n9SrcjicsBQ9q+qCVZcEM68c7uy6Nk0/8AlqeHfWa6V59DnA3 +HmZMareBRZszg9FwFojzf0niu/Yeb6BfwX95IxskGU/G9p3MfR5kI8ZXU7RjUhSw +d4pnWAYptupy2NyYiyOuJYfvyMdw3bTHIWLs0+W4kCIASSnlgkIURF8YzrJ48VF+ +MX7J2PwqMmz9uJqfnoAKQhXjJBZEV7owGVrD/93+UnyfYwGQyN5xDAWOJ+EaMIM7 +R3APe+ErDQx9o/OGmGAtLsDos6RPXhOfOVT9MaulpOYCt6xTxzqth+v7HcKWfw== +-----END CERTIFICATE----- diff --git a/config/docker/nginx/local/default.conf b/config/docker/nginx/local/default.conf new file mode 100644 index 0000000..fb2ec55 --- /dev/null +++ b/config/docker/nginx/local/default.conf @@ -0,0 +1,37 @@ +server { + listen 443 ssl; + server_name localhost; + + ssl_certificate /etc/nginx/certs/localhost.pem; + ssl_certificate_key /etc/nginx/certs/localhost-key.pem; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + + root /var/www/html/public; + index index.php index.html; + + autoindex off; + rewrite ^/(.*)/$ /$1 permanent; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass php-local:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS on; + fastcgi_param HTTP_AUTHORIZATION $http_authorization; + fastcgi_param HTTP_X_XSRF_TOKEN $http_x_xsrf_token; + } + + location ~ /\.ht { + deny all; + } + + access_log /dev/stdout; + error_log /dev/stderr; +} diff --git a/config/docker/php/local/Dockerfile b/config/docker/php/local/Dockerfile new file mode 100644 index 0000000..424b158 --- /dev/null +++ b/config/docker/php/local/Dockerfile @@ -0,0 +1,111 @@ +FROM php:8.5-fpm + +ARG DEBIAN_FRONTEND=noninteractive +# ---------------------------------------------------------------------------------------------------------------------- +USER root + +# ---------------------------------------------------------------------------------------------------------------------- +# Create user +# ---------------------------------------------------------------------------------------------------------------------- +RUN useradd -m lion && echo 'lion:lion' | chpasswd && usermod -aG sudo lion && usermod -s /bin/bash lion +# ---------------------------------------------------------------------------------------------------------------------- +# Dependencies +# ---------------------------------------------------------------------------------------------------------------------- +RUN apt update -y \ + && apt-get install -y --no-install-recommends \ + sudo nano zsh git curl wget unzip cron golang-go \ + libonig-dev libpng-dev libzip-dev libjpeg-dev libfreetype6-dev pkg-config libssl-dev \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + && apt-get clean && rm -rf /var/lib/apt/lists/* +# ---------------------------------------------------------------------------------------------------------------------- +# PHP Extensions +# ---------------------------------------------------------------------------------------------------------------------- +RUN pecl install redis xdebug \ + && docker-php-ext-install mbstring gd zip pdo pdo_mysql \ + && docker-php-ext-enable xdebug redis gd zip + +RUN { \ + echo "xdebug.mode=develop,coverage,debug"; \ + echo "xdebug.remote_autostart=off"; \ + echo "xdebug.remote_connect_back=off"; \ + echo "xdebug.start_with_request=yes"; \ + echo "xdebug.idekey=docker"; \ + echo "xdebug.log=/dev/stdout"; \ + echo "xdebug.log_level=0"; \ + echo "xdebug.client_host=host.docker.internal"; \ + echo "xdebug.client_port=9000"; \ +} >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini + +RUN { \ + echo "pm = dynamic"; \ + echo "pm.max_children = 5"; \ + echo "pm.start_servers = 2"; \ + echo "pm.min_spare_servers = 2"; \ + echo "pm.max_spare_servers = 4"; \ + echo "pm.max_requests = 200"; \ + echo "request_terminate_timeout = 30s"; \ +} >> /usr/local/etc/php-fpm.d/www.conf + +RUN { \ + echo "memory_limit = 512M"; \ + echo "max_execution_time = 30"; \ + echo "expose_php = Off"; \ + echo "display_errors = Off"; \ + echo "log_errors = On"; \ + echo "error_log = /dev/stderr"; \ +} > /usr/local/etc/php/conf.d/production.ini +# ---------------------------------------------------------------------------------------------------------------------- +USER lion + +SHELL ["/bin/bash", "--login", "-i", "-c"] +# ---------------------------------------------------------------------------------------------------------------------- +# Install nvm, Node.js and npm +# ---------------------------------------------------------------------------------------------------------------------- +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash \ + && source /home/lion/.bashrc \ + && nvm install 24 \ + && npm install -g npm +# ---------------------------------------------------------------------------------------------------------------------- +# Install OhMyZsh +# ---------------------------------------------------------------------------------------------------------------------- +RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)" +# ---------------------------------------------------------------------------------------------------------------------- +USER root + +SHELL ["/bin/bash", "--login", "-c"] +# ---------------------------------------------------------------------------------------------------------------------- +# Install logo-ls +# ---------------------------------------------------------------------------------------------------------------------- +RUN ARCH=$(uname -m) && \ + if [ "$ARCH" = "x86_64" ]; then \ + wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_amd64.deb; \ + elif [ "$ARCH" = "aarch64" ]; then \ + wget https://github.com/Yash-Handa/logo-ls/releases/download/v1.3.7/logo-ls_arm64.deb; \ + else \ + echo "Unsupported architecture: $ARCH" && exit 1; \ + fi && \ + dpkg -i logo-ls_*.deb && \ + rm logo-ls_*.deb && \ + curl https://raw.githubusercontent.com/UTFeight/logo-ls-modernized/master/INSTALL | bash +# ---------------------------------------------------------------------------------------------------------------------- +# Add configuration in .zshrc +# ---------------------------------------------------------------------------------------------------------------------- +RUN echo 'export NVM_DIR="$HOME/.nvm"' >> /home/lion/.zshrc \ + && echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/lion/.zshrc \ + && echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> /home/lion/.zshrc \ + && echo 'alias ls="logo-ls"' >> /home/lion/.zshrc \ + && source /home/lion/.zshrc +# ---------------------------------------------------------------------------------------------------------------------- +# Copy files / Permissions +# ---------------------------------------------------------------------------------------------------------------------- +COPY . . + +COPY config/docker/nginx/local/certs/localhost.pem /usr/local/share/ca-certificates/localhost.crt + +RUN update-ca-certificates \ + && sed -i 's/^user = www-data/user = lion/' /usr/local/etc/php-fpm.d/www.conf \ + && sed -i 's/^group = www-data/group = lion/' /usr/local/etc/php-fpm.d/www.conf \ + && chown -R lion:lion /var/www/html/public \ + && chmod -R u=rwX,go=rX /var/www/html/public + +CMD ["php-fpm"] diff --git a/docker-compose.yml b/docker-compose.yml index 667d3db..499dc15 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,17 @@ services: - php: + #################################################################################################################### + #### Local development environment ################################################################################# + #################################################################################################################### + php-local: + profiles: [ "local" ] container_name: framework-php build: context: . - dockerfile: Dockerfile - extra_hosts: - - host.docker.internal:host-gateway + dockerfile: config/docker/php/local/Dockerfile ports: - - 80:80 - - 443:443 - - 5173:5173 - - 5174:5174 - - 4321:4321 + - "5173:5173" + - "4321:4321" + - "4173:4173" environment: - XDEBUG_PORT=9000 - XDEBUG_CLIENT_HOST=host.docker.internal @@ -19,14 +19,36 @@ services: - ./:/var/www/html depends_on: - mysql + - redis networks: - lion + nginx-local: + profiles: [ "local" ] + container_name: framework-nginx + build: + context: . + dockerfile: config/docker/nginx/local/Dockerfile + ports: + - "8000:443" + depends_on: + - php-local + volumes: + - ./:/var/www/html + networks: + - lion + + #################################################################################################################### + #### System services ############################################################################################### + #################################################################################################################### + mysql: - image: mysql + # t4g.micro + profiles: [ "local" ] + image: mysql:8.4 container_name: framework-mysql ports: - - 3306:3306 + - "3306:3306" environment: MYSQL_DATABASE: lion_database MYSQL_PASSWORD: lion @@ -35,10 +57,38 @@ services: - mysql_data:/var/lib/mysql networks: - lion + cpuset: "0-1" + deploy: + resources: + limits: + cpus: "0.5" + memory: 1G + + redis: + # t4g.nano + profiles: [ "local" ] + image: redis:latest + container_name: framework-redis + ports: + - "6379:6379" + volumes: + - redis_data:/data + networks: + - lion + cpuset: "0-1" + deploy: + resources: + limits: + cpus: "0.25" + memory: 512M volumes: mysql_data: + driver: local + redis_data: + driver: local networks: lion: driver: bridge + name: lion-framework-network