Commit c2aafd7c authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- Séparation du container PHP pour alléger / centraliser

 - Mise en place PHP-FPM
 - Worker + PHP, même Dockerfile
 - A Ranger/ Mettre au propre / Documenter
parent 6e0b510a
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ $worker->addFunction('hello', 'oscarJob_hello');
// Affiche dans le journalctl -u oscarworker.service -f
$execDev = "2";
echo "###################################################################\n";
echo "# OSCAR WORKER STARTED " . \Oscar\OscarVersion::getBuild() . " SPARTAN\n";
echo "# OSCAR WORKER STARTED\n";
echo "# working directory : '" . __DIR__ . "'\n";
echo "###################################################################\n";

+51 −31
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ services:
    volumes:
      - ./:/var/application
    depends_on:
      - oscar-dev-gearman
      - oscar-dev-php
    networks:
      - oscar-dev-network
#    env_file: # TODO
@@ -47,8 +47,11 @@ services:
    build:
      context: ./docker/dev/apache/
      dockerfile: Dockerfile
    extra_hosts:
      - host.docker.internal:host-gateway
    ports:
      - "8888:80"
#      - "9003:9003"


  ######################################################################
@@ -56,6 +59,8 @@ services:
  oscar-dev-gearman:
    container_name: oscar-dev-gearman
    image: artefactual/gearmand:1.1.21.2-alpine
    depends_on:
      - oscar-dev-postgres
    networks:
      - oscar-dev-network
    tty: true
@@ -73,29 +78,44 @@ services:
#      - cluster.name=es-oscar-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    depends_on:
      - oscar-dev-postgres
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/dev/volumes/elasticsearch:/usr/share/elasticsearch/data
#    ports:
#      - "9200:9200"
    networks:
      - oscar-dev-network
    tty: true
    restart: "always"

  ######################################################################
  ### WORKER
  oscar-dev-php:
    container_name: oscar-dev-php
    restart: unless-stopped
    depends_on:
      - oscar-dev-gearman
    volumes:
      - ./:/var/application
    networks:
      - oscar-dev-network
    build:
      context: ./docker/dev/worker
      dockerfile: Dockerfile


  ######################################################################
  ### WORKER
  oscar-dev-worker:
    container_name: oscar-dev-worker
    restart: unless-stopped
    depends_on:
      - oscar-dev-gearman
    volumes:
      - ./:/var/application
    depends_on:
      - oscar-dev-apache
    networks:
      - oscar-dev-network
#    env_file: # TODO
@@ -103,7 +123,7 @@ services:
    build:
      context: ./docker/dev/worker
      dockerfile: Dockerfile

    command: ["php", "/var/application/bin/oscar-worker.php"]

  ######################################################################
  ### VITE
@@ -120,28 +140,28 @@ services:
      - "5173:5173"


  ######################################################################
  # KIBANA
  kibana:
    image: docker.elastic.co/kibana/kibana:7.16.1
    container_name: oscar-dev-kibana
    depends_on:
      - oscar-dev-elasticsearch
    networks:
      - oscar-dev-network
    environment:
      - ELASTICSEARCH_HOSTS=http://oscar-dev-elasticsearch:9200  # Connexion à Elasticsearch
    ports:
      - "5601:5601"


  ######################################################################
  # MAILHOG (capture les mails envoyés depuis Oscar)
  mailhog:
    image: mailhog/mailhog
    container_name: oscar-dev-mailhog
    networks:
      - oscar-dev-network
    ports:
      - "8025:8025" # Interface web MailHog
      - "1025:1025" # Port SMTP pour envoyer les mails
 No newline at end of file
#  ######################################################################
#  # KIBANA
#  kibana:
#    image: docker.elastic.co/kibana/kibana:7.16.1
#    container_name: oscar-dev-kibana
#    depends_on:
#      - oscar-dev-elasticsearch
#    networks:
#      - oscar-dev-network
#    environment:
#      - ELASTICSEARCH_HOSTS=http://oscar-dev-elasticsearch:9200  # Connexion à Elasticsearch
#    ports:
#      - "5601:5601"
#
#
#  ######################################################################
#  # MAILHOG (capture les mails envoyés depuis Oscar)
#  mailhog:
#    image: mailhog/mailhog
#    container_name: oscar-dev-mailhog
#    networks:
#      - oscar-dev-network
#    ports:
#      - "8025:8025" # Interface web MailHog
#      - "1025:1025" # Port SMTP pour envoyer les mails
 No newline at end of file
+6 −72
Original line number Diff line number Diff line
FROM php:8.2-apache-bookworm
FROM debian:12-slim

LABEL authors="Stéphane BOUVRY<stephane.bouvry@unicaen.fr>"

# RUN apt-get update && apt-get -y install php8.2-gearman
RUN apt update && apt install -y \
    wget \
    libpq-dev \
    postgresql-client \
    libgearman-dev \
    gearman-job-server
RUN apt update && apt install -y apache2

RUN pecl install gearman  \
    && docker-php-ext-enable gearman \
    # XDebug
    && pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && docker-php-ext-install bcmath \
    && docker-php-ext-install gettext \
    && docker-php-ext-install pdo \
    && docker-php-ext-install pdo_pgsql \
    && docker-php-ext-install sockets \
    # Sodium
    && apt install -y libsodium-dev \
    && docker-php-ext-install sodium \
    # Intl
    && apt install -y libicu-dev \
    && docker-php-ext-configure intl \ 
    && docker-php-ext-install intl \
    # Ldap
    && apt install -y libldap2-dev \
    && docker-php-ext-install ldap \
    # Gd
    && apt install zlib1g-dev  \
    && apt install -y libpng-dev \
    && docker-php-ext-install gd \
    # Zip
    && apt install -y libzip-dev \
    && docker-php-ext-install zip \
    # Git
    && apt install -y git
RUN a2enmod proxy_fcgi setenvif rewrite

# Installation de composer
RUN wget https://getcomposer.org/download/2.2.24/composer.phar
RUN mv composer.phar /bin/composer && chmod +x /bin/composer
EXPOSE 80

RUN apt install -y libbz2-dev \
    && docker-php-ext-install bz2

RUN apt install -y apache2-suexec-custom sudo git
RUN apt install -y sendmail

RUN a2enmod rewrite
#RUN a2enmod suexec
#
#
#RUN groupadd app
#RUN useradd -m -s /bin/bash -g app app
## RUN chown -R app:app /var/application

# Configuration PHP
COPY ./php.ini /usr/local/etc/php/conf.d/999-application.ini

## Mail rerouté var mailhog avec mhsendmail
RUN wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64
RUN chmod +x mhsendmail_linux_amd64
RUN mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail

WORKDIR /var/application

# Copier le script d'entrée
COPY ./entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Définir le script comme point d'entrée
ENTRYPOINT ["/entrypoint.sh"]

COPY apache-config.conf /etc/apache2/sites-available/000-default.conf
COPY ./apache-config.conf /etc/apache2/sites-available/000-default.conf

CMD ["apachectl", "-DFOREGROUND"]
 No newline at end of file
+7 −6
Original line number Diff line number Diff line
@@ -2,13 +2,14 @@
    ServerName localhost
    DocumentRoot /var/application/public

    <Directory /var/application/public>
    <Directory "/var/application/public">
            AllowOverride All
            Require all granted
            DirectoryIndex index.php
            <FilesMatch \.php$>
                SetHandler "proxy:fcgi://oscar-dev-php:9000"
            </FilesMatch>
        </Directory>

#    SuexecUserGroup app www-data
    LogLevel warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    LogLevel debug
    ErrorLog /proc/self/fd/2
</VirtualHost>
 No newline at end of file
+3 −2
Original line number Diff line number Diff line
# Niveau de log
; Niveau de log
log_errors = On

# Log envoyés dans la sortie standard (s'affiche dans les logs docker)
; Log envoyés dans la sortie standard (s'affiche dans les logs docker)
error_log = /dev/stderr
error_reporting = E_ALL
display_errors = On
@@ -24,6 +24,7 @@ xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
xdebug.discover_client_host=true

; Afficher les logs (optionnel)
xdebug.log=/tmp/xdebug.log
Loading