Commit 09073cf8 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release_9.3.0_php82' into dev

parents b3280e55 e99dbad6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@
/data/DoctrineORMModule/
/vendor

/upload

/tmp/
/migration/

+17 −4
Original line number Diff line number Diff line
image: localhost:5000/unicaen-dev-php7.3-apache

stages:
  - prepare
  - release

prepare_job:
  stage: prepare  # This stage must run before the release stage
  rules:
    - if: $CI_COMMIT_TAG  # Run this job when a tag is created manually
  script:
    - echo "VERSION_DIR=v$(echo $CI_COMMIT_TAG | cut -f1 -d'.')" >> variables.env  # ex : '8.6.0' => 'v8'
  artifacts:
    reports:
      dotenv: variables.env  # Use artifacts:reports:dotenv to expose the variables to other jobs

release_job:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  needs:
    - job: prepare_job
      artifacts: true
  rules:
    - if: $CI_COMMIT_TAG  # Run this job when a tag is created manually
  script: echo "Creation de la release $CI_COMMIT_TAG..."
  script:
    - echo "Inscription de la release $CI_COMMIT_TAG..."
  release:
    name: '$CI_COMMIT_TAG'
    tag_name: '$CI_COMMIT_TAG'
    ref: '$CI_COMMIT_TAG'
    description: 'Cf. [CHANGELOG](CHANGELOG.md) et [Release notes](doc/release-notes/v$CI_COMMIT_TAG.md)'
    description: 'Cf. [CHANGELOG]($CI_PROJECT_URL/CHANGELOG.md) et [Release notes]($CI_PROJECT_URL/doc/release-notes/$VERSION_DIR/$CI_COMMIT_TAG.md)'
+435 −39

File changed.

Preview size limit exceeded, changes collapsed.

+41 −12
Original line number Diff line number Diff line
###########################################################################################
#
#                             Image pour l'application SyGAL.
#                         Image Docker pour l'application SyGAL
#
###########################################################################################

FROM debian:bullseye AS distrib

ENV TZ="Europe/Paris"

LABEL maintainer="Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>"

ARG PHP_VERSION
@@ -28,6 +30,7 @@ RUN apt-get -qq update && \
        ghostscript-x \
        gcc \
        git \
        host \
        imagemagick \
        ldap-utils \
        libaio1 \
@@ -45,10 +48,12 @@ RUN apt-get -qq update && \
        memcached \
        nano \
        netcat-openbsd \
        net-tools \
        postgresql-client \
        qpdf \
        ssh \
        ssl-cert \
        telnet \
        unzip \
        vim \
        wget \
@@ -63,7 +68,8 @@ RUN wget https://www.saxonica.com/download/libsaxon-HEC-setup64-v11.4.zip -P /tm
    cd ${SAXONC_INSTALL_DIR} && \
    cp *.so /usr/lib/. && cp -r rt /usr/lib/. && cp -r saxon-data /usr/lib/. && \
    export SAXONC_HOME=/usr/lib && \
    cd command && ./buildhec-command.sh && ln -s ${SAXONC_INSTALL_DIR}/command/transform ${SAXONC_TRANSFORM_CMD_DEPLOY_DIR}
    cd command && ./buildhec-command.sh && ln -s ${SAXONC_INSTALL_DIR}/command/transform ${SAXONC_TRANSFORM_CMD_DEPLOY_DIR} && \
    cd

## Liquibase (+ Java)
#ADD resources/jre-8u321-linux-x64.tar.gz /opt/java/
@@ -110,7 +116,7 @@ RUN apt-get -qq update && \
        php${PHP_VERSION}-opcache \
        php${PHP_VERSION}-pgsql \
        php${PHP_VERSION}-soap \
        php${PHP_VERSION}-xdebug \
#        php${PHP_VERSION}-xdebug \ --> cf. install à part ci-après
        php${PHP_VERSION}-xml \
        php${PHP_VERSION}-zip \
        php${PHP_VERSION}-cli \
@@ -121,6 +127,11 @@ RUN apt-get -qq update && \
# Forçage de la version de PHP CLI
RUN update-alternatives --set php /usr/bin/php${PHP_VERSION}

# Installation manuelle de xdebug 3.2.2, car les 3.3.0/1/2 provoquent une "Segmentation fault" au 22/05/2024 (à cause de PHP 8.0 ?)
RUN pecl install xdebug-3.2.2 && \
    echo "zend_extension=xdebug" > ${PHP_CONF_DIR}/fpm/conf.d/20-xdebug.ini && \
    echo "zend_extension=xdebug" > ${PHP_CONF_DIR}/cli/conf.d/20-xdebug.ini

# Composer
COPY --from=get-composer /usr/bin/composer /usr/local/bin/composer

@@ -161,10 +172,10 @@ RUN ln -sf /dev/stdout /var/log/apache2/other_vhosts_access.log
RUN ln -sf /dev/stderr /var/log/apache2/error.log

# Configuration Apache.
ADD ${APACHE_CONF_LOCAL_DIR}/apache-ports.conf     ${APACHE_CONF_DIR}/ports.conf
ADD ${APACHE_CONF_LOCAL_DIR}/apache-site.conf      ${APACHE_CONF_DIR}/sites-available/app.conf
ADD ${APACHE_CONF_LOCAL_DIR}/apache-site-ssl.conf  ${APACHE_CONF_DIR}/sites-available/app-ssl.conf
RUN a2ensite app app-ssl
ADD ${APACHE_CONF_LOCAL_DIR}/ports.conf     ${APACHE_CONF_DIR}/ports.conf
ADD ${APACHE_CONF_LOCAL_DIR}/sygal.conf     ${APACHE_CONF_DIR}/sites-available/sygal.conf
ADD ${APACHE_CONF_LOCAL_DIR}/sygal-ssl.conf ${APACHE_CONF_DIR}/sites-available/sygal-ssl.conf
RUN a2ensite sygal sygal-ssl


###########################################################################################
@@ -188,10 +199,28 @@ ADD docker/entrypoint.sh /sbin/entrypoint.sh
RUN chmod 755 /sbin/entrypoint.sh
CMD ["/sbin/entrypoint.sh"]



COPY . /app

WORKDIR /app

#RUN composer install
## Dépendances PHP puis sources puis autoloading puis scripts (favorise la mise en cache Docker)
#COPY composer.json ./
#COPY composer.lock ./
#RUN composer install --no-interaction --prefer-dist --optimize-autoloader --no-scripts
#COPY . /app
#RUN composer dump-autoload --optimize
#RUN composer run-script post-install-cmd
#
## Répertoire pour l'upload de fichiers
#RUN mkdir -p upload && \
#  chown -R www-data:root upload && \
#  chmod -R 770 upload
#
## Cache Laminas
#RUN mkdir -p data/cache && chmod 777 data/cache
#RUN rm -rf data/cache/*
#
## Cache Doctrine
#RUN mkdir -p data/DoctrineModule/cache && chmod 777 data/DoctrineModule/cache #&& rm -rf data/DoctrineModule/cache/*
#RUN mkdir -p data/DoctrineORMModule/Proxy && chmod 777 data/DoctrineORMModule/Proxy && rm -rf data/DoctrineORMModule/Proxy/*
#
#RUN vendor/bin/laminas-development-mode enable  # nécessaire !

Dockerfile.sh

0 → 100644
+251 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

#########################################################################################################
#
#                         Image Docker pour l'application SyGAL
#           traduite en script sh, pour configurer manuellement un serveur Debian
#
# Pré-requis :
#   - Etre root sur le serveur
#   - Avoir récupéré les sources de l'application et être positionné dans leur répertoire
#   - Copier le répertoire ./docker dans le répertoire /tmp du serveur : cp -r ./docker /tmp/
#
#########################################################################################################

#FROM debian:bullseye AS distrib

#ENV TZ="Europe/Paris"

#LABEL maintainer="Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>"

#ARG PHP_VERSION

export PHP_VERSION=8.0

#ENV HTTP_PROXY=${http_proxy} \
#    HTTPS_PROXY=${https_proxy} \
#    NO_PROXY=${no_proxy} \
#    http_proxy=${http_proxy} \
#    https_proxy=${https_proxy} \
#    no_proxy=${no_proxy}

apt-get -qq update && \
    apt-get install -y \
        apache2 \
        ca-certificates \
        curl \
        ghostscript \
        ghostscript-x \
        gcc \
        git \
        host \
        imagemagick \
        ldap-utils \
        libaio1 \
        libcurl4-openssl-dev \
        libfreetype6-dev \
        libicu-dev \
        libjpeg62-turbo-dev \
        libldap2-dev \
        libmcrypt-dev \
        libmemcached-dev \
        libmemcached-tools \
        libssl-dev \
        libxml2-dev \
        make \
        memcached \
        nano \
        netcat-openbsd \
        net-tools \
        postgresql-client \
        qpdf \
        ssh \
        ssl-cert \
        telnet \
        unzip \
        vim \
        wget \
        zlib1g-dev

# Saxon/C transform command (https://www.saxonica.com/download/c.xml)
export SAXONC_INSTALL_DIR="/opt/Saxonica/SaxonHEC" \
    SAXONC_TRANSFORM_CMD_DEPLOY_DIR="/usr/bin"
wget https://www.saxonica.com/download/libsaxon-HEC-setup64-v11.4.zip -P /tmp/ && \
    unzip -o /tmp/libsaxon-HEC-setup64-v11.4.zip -d /tmp/ && \
    mkdir -p ${SAXONC_INSTALL_DIR} && cp -r /tmp/libsaxon-HEC-11.4/* ${SAXONC_INSTALL_DIR}/ && \
    cd ${SAXONC_INSTALL_DIR} && \
    cp *.so /usr/lib/. && cp -r rt /usr/lib/. && cp -r saxon-data /usr/lib/. && \
    export SAXONC_HOME=/usr/lib && \
    cd command && ./buildhec-command.sh && ln -s ${SAXONC_INSTALL_DIR}/command/transform ${SAXONC_TRANSFORM_CMD_DEPLOY_DIR} &&
    cd

## Liquibase (+ Java)
#ADD resources/jre-8u321-linux-x64.tar.gz /opt/java/
#ENV JAVA_HOME="/opt/java/jre1.8.0_321"
#ADD resources/liquibase-4.8.0.tar.gz /opt/liquibase/
#ENV PATH="/opt/liquibase/:${PATH}"


###########################################################################################

#FROM composer:2.5.5 AS get-composer

#FROM distrib AS php

#ENV PHP_CONF_LOCAL_DIR=docker/configs/php \
export PHP_CONF_LOCAL_DIR=/tmp/docker/configs/php \
    PHP_CONF_DIR=/etc/php/${PHP_VERSION} \
    FPM_PHP_LOG_FILE=/var/log/php-fpm.log

# Repositories fournissant PHP 5.x, 7.x et 8.x
apt-get -qq update && \
    apt-get -y install apt-transport-https lsb-release ca-certificates curl && \
    curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg && \
    sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
#    wget --no-check-certificate -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \
#    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

apt-get -qq update && \
    apt-get install -y \
        php-pear \
        php${PHP_VERSION} \
        php${PHP_VERSION}-bcmath \
        php${PHP_VERSION}-curl \
        php${PHP_VERSION}-dev \
        php${PHP_VERSION}-fpm \
        php${PHP_VERSION}-gd \
        php${PHP_VERSION}-gettext \
        php${PHP_VERSION}-iconv \
        php${PHP_VERSION}-imagick \
        php${PHP_VERSION}-intl \
        php${PHP_VERSION}-ldap \
        php${PHP_VERSION}-mbstring \
        php${PHP_VERSION}-memcached \
        php${PHP_VERSION}-opcache \
        php${PHP_VERSION}-pgsql \
        php${PHP_VERSION}-soap \
        php${PHP_VERSION}-xml \
        php${PHP_VERSION}-zip \
        php${PHP_VERSION}-cli \
        php${PHP_VERSION}-common \
        php${PHP_VERSION}-opcache \
        php${PHP_VERSION}-readline

# Forçage de la version de PHP CLI
update-alternatives --set php /usr/bin/php${PHP_VERSION}

# Installation manuelle de xdebug 3.2.2, car les 3.3.0/1/2 provoquent une "Segmentation fault" au 22/05/2024 (à cause de PHP 8.0 ?)
pecl install xdebug-3.2.2 && \
    echo "zend_extension=xdebug" > ${PHP_CONF_DIR}/fpm/conf.d/20-xdebug.ini && \
    echo "zend_extension=xdebug" > ${PHP_CONF_DIR}/cli/conf.d/20-xdebug.ini

# Composer
#COPY --from=get-composer /usr/bin/composer /usr/local/bin/composer
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
then
    >&2 echo 'ERROR: Invalid installer checksum'
    rm composer-setup.php
    exit 1
fi
php composer-setup.php --quiet
RESULT=$?
rm composer-setup.php
mv composer.phar /usr/local/bin/composer

# Configuration PHP, php-fpm.
cp ${PHP_CONF_LOCAL_DIR}/fpm/pool.d/www.conf.part /tmp/
cat /tmp/www.conf.part >> ${PHP_CONF_DIR}/fpm/pool.d/www.conf && rm /tmp/www.conf.part
cp ${PHP_CONF_LOCAL_DIR}/fpm/conf.d/99-sygal.ini ${PHP_CONF_DIR}/fpm/conf.d/
cp ${PHP_CONF_LOCAL_DIR}/cli/conf.d/99-sygal.ini ${PHP_CONF_DIR}/cli/conf.d/

# Création du fichier pour les logs FPM (cf. fpm/pool.d/www.conf.part)
touch ${FPM_PHP_LOG_FILE} && \
    chown www-data:www-data ${FPM_PHP_LOG_FILE}


###########################################################################################


#FROM php AS apache

export APACHE_CONF_LOCAL_DIR=/tmp/docker/configs/apache \
    APACHE_CONF_DIR=/etc/apache2

a2enmod actions alias rewrite ssl proxy proxy_fcgi setenvif headers && \
    a2dismod mpm_event && a2enmod mpm_worker
cp ${APACHE_CONF_LOCAL_DIR}/conf-available/security.conf ${APACHE_CONF_DIR}/conf-available/security-unicaen.conf
cp ${APACHE_CONF_LOCAL_DIR}/conf-available/livelog.conf  ${APACHE_CONF_DIR}/conf-available/livelog.conf
cp ${APACHE_CONF_LOCAL_DIR}/conf-available/api.conf      ${APACHE_CONF_DIR}/conf-available/api.conf

a2disconf security.conf && \
    a2enconf security-unicaen.conf \
             php${PHP_VERSION}-fpm \
             livelog.conf \
             api.conf

# Symlink apache access and error logs to stdout/stderr so Docker logs shows them.
#RUN ln -sf /dev/stdout /var/log/apache2/access.log
#RUN ln -sf /dev/stdout /var/log/apache2/other_vhosts_access.log
#RUN ln -sf /dev/stderr /var/log/apache2/error.log

# Configuration Apache.
cp ${APACHE_CONF_LOCAL_DIR}/ports.conf     ${APACHE_CONF_DIR}/ports.conf
cp ${APACHE_CONF_LOCAL_DIR}/sygal.conf     ${APACHE_CONF_DIR}/sites-available/sygal.conf
cp ${APACHE_CONF_LOCAL_DIR}/sygal-ssl.conf ${APACHE_CONF_DIR}/sites-available/sygal-ssl.conf
a2ensite sygal sygal-ssl


###########################################################################################


#FROM apache AS bootstrap

# Nettoyage
#RUN apt-get autoremove -y && apt-get clean && rm -rf /tmp/* /var/tmp/*

# Copie les fichiers situés dans ./docker/entrypoint.d dans le dossier /entrypoint.d de l'image.
# Les scripts exécutables parmi eux seront exécutés au démarrage du container (cf. entrypoint.sh).
# Attention : les noms de fichiers ne doivent être constitués que de lettres minuscules ou majuscules,
# de chiffres, de tirets bas (underscore) ou de tirets ; extension interdite, donc.
#ADD docker/entrypoint.d/* /entrypoint.d/
## Copie des scripts complémentaires à lancer au démarrage du container.
#COPY docker/entrypoint.d/* /entrypoint.d/

# Entry point
#ADD docker/entrypoint.sh /sbin/entrypoint.sh
#RUN chmod 755 /sbin/entrypoint.sh
#CMD ["/sbin/entrypoint.sh"]
service memcached start

a2enmod proxy_wstunnel

service php${PHP_VERSION}-fpm start
service apache2 restart

#WORKDIR /app

# Dépendances PHP puis sources puis autoloading puis scripts (favorise la mise en cache Docker)
#COPY composer.json ./
#COPY composer.lock ./
composer install --no-interaction --no-autoloader --prefer-dist --no-scripts
#COPY . /app
composer dump-autoload --optimize
composer run-script post-install-cmd

# Répertoire pour l'upload de fichiers
mkdir -p upload && \
  chown -R www-data:root upload && \
  chmod -R 770 upload

# Cache Laminas
mkdir -p data/cache && chmod 777 data/cache
rm -rf data/cache/*

# Cache Doctrine
mkdir -p data/DoctrineModule/cache && chmod 777 data/DoctrineModule/cache #&& rm -rf data/DoctrineModule/cache/*
mkdir -p data/DoctrineORMModule/Proxy && chmod 777 data/DoctrineORMModule/Proxy && rm -rf data/DoctrineORMModule/Proxy/*

vendor/bin/laminas-development-mode enable  # nécessaire !
Loading