From 22118442db1ff11b55b7f46c64e258f1fd913fba Mon Sep 17 00:00:00 2001
From: Zahdi <ZahdiMohcine20@gmail.com>
Date: Wed, 19 Mar 2025 14:41:51 +0100
Subject: [PATCH] [Initialization] adding docker necessary files

---
 .dockerignore                 |  1 +
 docker/docker-compose.yml     | 54 +++++++++++++++++++++++++++++++++++
 docker/php/Dockerfile         | 23 +++++++++++++++
 docker/php/vhosts/vhosts.conf | 34 ++++++++++++++++++++++
 4 files changed, 112 insertions(+)
 create mode 100644 .dockerignore
 create mode 100644 docker/docker-compose.yml
 create mode 100644 docker/php/Dockerfile
 create mode 100644 docker/php/vhosts/vhosts.conf

diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..c21b5e61
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+docker/
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
new file mode 100644
index 00000000..eb366226
--- /dev/null
+++ b/docker/docker-compose.yml
@@ -0,0 +1,54 @@
+version: "3.8"
+services:
+
+    db:
+        image: mysql:8.1.0  
+        container_name: db_docker_symfony
+        restart: always
+        volumes:
+          - ./server/mysql_data:/var/lib/mysql    #this line maps the content of ./server/mysql_data in your pc to the /var/lib/mysql of the container
+        environment:
+            MYSQL_ROOT_PASSWORD: root_PWD-iaw    #you can change the mysql root password here
+            #MYSQL_DATABASE: lamp_db    #you can change the database name here
+            MYSQL_USER: mysqlAdmin  #you can change the user name here
+            MYSQL_PASSWORD: adminPwd #you can change the user password here
+        networks:
+            - dev
+
+    phpmyadmin:
+        image: phpmyadmin
+        container_name: phpmyadmin_docker_symfony
+        restart: always
+        depends_on:
+            - db
+        ports:
+            - 8080:80
+        environment:
+            PMA_HOST: db
+        networks:
+            - dev
+
+    maildev:
+        image: maildev/maildev
+        container_name: maildev_docker_symfony
+        command: bin/maildev --web 80 --smtp 25 --hide-extensions STARTTLS
+        ports:
+          - "8081:80"
+        restart: always
+        networks:
+            - dev
+
+    www:
+        build: php
+        container_name: www_docker_symfony
+        ports:
+          - "80:80"
+        volumes:
+            - ./php/vhosts:/etc/apache2/sites-enabled
+            - ../:/var/www
+        restart: always
+        networks:
+            - dev
+
+networks:
+    dev:
diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile
new file mode 100644
index 00000000..feb00d62
--- /dev/null
+++ b/docker/php/Dockerfile
@@ -0,0 +1,23 @@
+FROM php:8.2-apache
+
+RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf 
+
+RUN apt-get update \
+    &&  apt-get install -y --no-install-recommends \
+        locales apt-utils git libicu-dev g++ libpng-dev libxml2-dev libzip-dev libonig-dev libxslt-dev unzip 
+
+RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen  \
+    &&  echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen \
+    &&  locale-gen 
+
+RUN curl -sS https://getcomposer.org/installer | php -- \
+    &&  mv composer.phar /usr/local/bin/composer 
+
+RUN curl -sS https://get.symfony.com/cli/installer | bash \
+    &&  mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
+ 
+RUN docker-php-ext-configure intl 
+RUN docker-php-ext-install pdo pdo_mysql opcache intl zip calendar dom mbstring gd xsl 
+RUN pecl install apcu && docker-php-ext-enable apcu
+
+WORKDIR /var/www/
\ No newline at end of file
diff --git a/docker/php/vhosts/vhosts.conf b/docker/php/vhosts/vhosts.conf
new file mode 100644
index 00000000..12be807c
--- /dev/null
+++ b/docker/php/vhosts/vhosts.conf
@@ -0,0 +1,34 @@
+<VirtualHost *:80>
+    ServerName localhost
+
+    DocumentRoot /var/www/project/public
+    DirectoryIndex /index.php
+
+    <Directory /var/www/project/public>
+        AllowOverride None
+        Order Allow,Deny
+        Allow from All
+
+        FallbackResource /index.php
+    </Directory>
+
+    # uncomment the following lines if you install assets as symlinks
+    # or run into problems when compiling LESS/Sass/CoffeeScript assets
+    # <Directory /var/www/project>
+    #     Options FollowSymlinks
+    # </Directory>
+
+    # optionally disable the fallback resource for the asset directories
+    # which will allow Apache to return a 404 error when files are
+    # not found instead of passing the request to Symfony
+    <Directory /var/www/project/public/bundles>
+        FallbackResource disabled
+    </Directory>
+    ErrorLog /var/log/apache2/project_error.log
+    CustomLog /var/log/apache2/project_access.log combined
+
+    # optionally set the value of the environment variables used in the application
+    #SetEnv APP_ENV prod
+    #SetEnv APP_SECRET <app-secret-id>
+    #SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"
+</VirtualHost>
-- 
GitLab