From 3815f424bb7303f23aa7d33327f514bf8485a344 Mon Sep 17 00:00:00 2001 From: Louis Desplanche Date: Mon, 27 Jul 2020 12:50:54 +0200 Subject: [PATCH] Dockerize --- Dockerfile | 62 +++++++++++++++++++++++++++ app/console | 0 docker/docker-compose.yml | 39 +++++++++++++++++ init.sh | 89 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 Dockerfile mode change 100644 => 100755 app/console create mode 100644 docker/docker-compose.yml create mode 100755 init.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5aa3b53 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,62 @@ +FROM php:7.2-apache + +# Update distrib +RUN apt update +RUN apt full-upgrade -y + +# Required for java +RUN mkdir -p /usr/share/man/man1 + + +# Install dependencies +RUN apt install -y git zip unzip libpng-dev nano wkhtmltopdf openjdk-11-jre zlib1g-dev libicu-dev g++ + + +# Update php.ini +RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" +RUN echo "date.timezone = Europe/Paris" >> "$PHP_INI_DIR/php.ini" +RUN sed -ri -e "s!'memory_limit'!'; memory_limit'!g" $PHP_INI_DIR/php.ini +RUN sed -ri -e "s!'memory_limit'!'; memory_limit'!g" $PHP_INI_DIR/php.ini +RUN echo "memory_limit = 2048M" >> "$PHP_INI_DIR/php.ini" + +# Install dependencies mods +RUN docker-php-ext-install gd +RUN docker-php-ext-install pdo_mysql +RUN docker-php-ext-install intl +RUN pecl install apcu +RUN pecl install apcu_bc +RUN echo "extension=apcu.so" >> "$PHP_INI_DIR/php.ini" +RUN echo "extension=apc.so" >> "$PHP_INI_DIR/php.ini" + +# Configure apache2 +ENV APACHE_DOCUMENT_ROOT /fairpay/web +RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf +RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf +RUN a2enmod rewrite + +# Install composer +RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +RUN php composer-setup.php +RUN rm composer-setup.php +RUN mv composer.phar /usr/bin/composer + +# Add sources +COPY . /fairpay +WORKDIR /fairpay + +# Install sources +RUN composer install + +RUN app/console assets:install --env=prod + +RUN mkdir web/bootstrap +RUN mkdir web/bootstrap/js +RUN cp vendor/twbs/bootstrap/dist/js/bootstrap.js web/bootstrap/js +RUN cp vendor/jquery/jquery/jquery-2.1.1.min.js web/bootstrap/js/jquery.js + + +RUN rm app/cache -rf + +EXPOSE 80 + +CMD ["./init.sh"] \ No newline at end of file diff --git a/app/console b/app/console old mode 100644 new mode 100755 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..50d5260 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,39 @@ +version: '3' +services: + web: + image: fairpay:latest + ports: + - 80:80 + environment: + - DB_HOST=database + - DB_NAME=fairpay + - DB_USER=fairpay + - DB_PASSWORD=fairpay + - MAILER_HOST=change.it + - MAILER_USER=~ + - MAILER_PASSWORD=~ + - IMAP_MAILBOX=bde@edu.esiee.fr + - IMAP_USERNAME=~ + - IMAP_PASSWORD=~ + - SECRET_KEY=CHANGEIT + - HOSTNAME=http://localhost + - PIWIK_ID=0 + - PIWIK_URL=http://change.it/ + - GOOGLE_CLIENT_ID=CHANGE IT + - GOOGLE_CLIENT_SECRET=CHANGE IT + + + database: + image: mysql:5.7 + ports: + - 3306:3306 + volumes: + - fairpay_db_data:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=CHANGEIT + - MYSQL_DATABASE=fairpay + - MYSQL_USER=fairpay + - MYSQL_PASSWORD=fairpay + +volumes: + fairpay_db_data: \ No newline at end of file diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..8bf8451 --- /dev/null +++ b/init.sh @@ -0,0 +1,89 @@ +#/bin/bash + +# define path to custom docker environment +DOCKER_ENVVARS=/etc/apache2/docker_envvars + +# write variables to DOCKER_ENVVARS +cat << EOF > "$DOCKER_ENVVARS" +export APACHE_RUN_USER=www-data +export APACHE_RUN_GROUP=www-data +export APACHE_LOG_DIR=/var/log/apache2 +export APACHE_LOCK_DIR=/var/lock/apache2 +export APACHE_PID_FILE=/var/run/apache2.pid +export APACHE_RUN_DIR=/var/run/apache2 +export APACHE_DOCUMENT_ROOT=/fairpay/web +EOF + +PARAMETERS_FILE=app/config/parameters.yml + +cat << EOF > "$PARAMETERS_FILE" +parameters: + database_driver: pdo_mysql + database_host: $DB_HOST + database_port: ~ + database_name: $DB_NAME + database_user: $DB_USER + database_password: $DB_PASSWORD + + mailer_transport: smtp + mailer_host: $MAILER_HOST + mailer_user: $MAILER_USER + mailer_password: $MAILER_PASSWORD + mailer_secondary_transport: smtp + mailer_secondary_host: 127.0.0.1 + mailer_secondary_user: ~ + mailer_secondary_password: ~ + mailer_aws1_host: 127.0.0.1 + mailer_aws1_user: null + mailer_aws1_password: null + mailer_aws2_host: 127.0.0.1 + mailer_aws2_user: null + mailer_aws2_password: null + mailer_aws3_host: 127.0.0.1 + mailer_aws3_user: null + mailer_aws3_password: null + + locale: fr + secret: $SECRET_KEY + application_version: 1.0.0 + hostname: $HOSTNAME + piwik_site_id: $PIWIK_ID + piwik_url: $PIWIK_URL + piwik_enabled: true + use_proxy: false + + client_id : $GOOGLE_CLIENT_ID + client_secret : $GOOGLE_CLIENT_SECRET + proxy: "" + + debug_toolbar: true + debug_redirects: false + use_assetic_controller: true + + imap_mailbox: $IMAP_MAILBOX + imap_username: $IMAP_USERNAME + imap_password: $IMAP_PASSWORD + imap_port: ~ + + router.request_context.host: ~ + router.request_context.scheme: ~ + router.request_context.base_url: ~ +EOF + +chown www-data:www-data /fairpay/app/logs/ -R +mkdir /fairpay/app/cache/ +chown www-data:www-data /fairpay/app/cache/ -R + +# source environment variables to get APACHE_PID_FILE +. "$DOCKER_ENVVARS" + +# only delete pidfile if APACHE_PID_FILE is defined +if [ -n "$APACHE_PID_FILE" ]; then + rm -f "$APACHE_PID_FILE" +fi + +# line copied from /etc/init.d/apache2 +ENV="env -i LANG=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +# use apache2ctl instead of /usr/sbin/apache2 +$ENV APACHE_ENVVARS="$DOCKER_ENVVARS" apache2ctl -DFOREGROUND \ No newline at end of file