From ea1e796347489b9df43a7865fb3a072c1148cefe Mon Sep 17 00:00:00 2001 From: LiittleCookie Date: Tue, 2 Sep 2025 19:09:45 +0000 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 32 ++++++++++++++++++++++++++++ docker-compose.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bd7811f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +FROM composer:2 AS vendor +WORKDIR /app + +ARG REPO_URL +ARG DEPLOY_KEY_B64 + +RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh +RUN echo "$DEPLOY_KEY_B64" | base64 -d > /root/.ssh/id_rsa && chmod 600 /root/.ssh/id_rsa +RUN ssh-keyscan git.ewelit.fr >> /root/.ssh/known_hosts + +RUN git clone --depth=1 $REPO_URL . + +RUN composer install --no-interaction --prefer-dist --no-progress + +FROM php:8.4-fpm-alpine + +RUN apk add --no-cache icu-libs libzip git bash \ + && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS icu-dev libzip-dev oniguruma-dev \ + && docker-php-ext-configure intl \ + && docker-php-ext-install -j$(nproc) pdo_mysql intl opcache \ + && apk del .build-deps + +COPY ./php/conf.d/opcache.ini /usr/local/etc/php/conf.d/opcache.ini +WORKDIR /var/www/html +COPY --from=vendor /app /var/www/html +RUN chown -R www-data:www-data /var/www/html + +COPY ./php/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + +EXPOSE 9000 +ENTRYPOINT ["entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..418cf12 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,52 @@ +version: "3.9" + +services: + app: + build: + context: . + dockerfile: Dockerfile + args: + REPO_URL: "${REPO_URL}" + DEPLOY_KEY_B64: "${DEPLOY_KEY}" + container_name: slim-app + environment: + APP_ENV: ${APP_ENV} + DB_HOST: ${DB_HOST} + DB_PORT: ${DB_PORT} + DB_DATABASE: ${DB_DATABASE} + DB_USERNAME: ${DB_USERNAME} + DB_PASSWORD: ${DB_PASSWORD} + depends_on: + db: + condition: service_healthy + + web: + image: nginx:1.27-alpine + container_name: slim-web + ports: + - "8080:80" + volumes: + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + - app + + db: + image: mariadb:11.4 + container_name: slim-db + environment: + MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MARIADB_DATABASE: ${DB_DATABASE} + MARIADB_USER: ${DB_USERNAME} + MARIADB_PASSWORD: ${DB_PASSWORD} + ports: + - "${DB_EXPOSE_PORT}:3306" + volumes: + - dbdata:/var/lib/mysql + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + dbdata: