diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 219a6c1..a267500 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ include: file: 'security/security.yml' - project: 'ldc-web/shared-ci' ref: 'main' - file: 'build/build.yml' + file: "build/docker-multistage.yml" - project: 'ldc-web/shared-ci' ref: 'main' file: 'test/test.yml' diff --git a/Dockerfile b/Dockerfile index 1b64bcc..bbe492b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,43 @@ +FROM composer:2.9.2 AS vendor + +ARG GITLAB_USER +ARG GITLAB_PASSWORD + +COPY database/ database/ + +COPY composer.json composer.json +COPY composer.lock composer.lock + +RUN composer config gitlab-token.lab.s-web.fr ${GITLAB_USER} ${GITLAB_PASSWORD} +RUN composer install \ + --ignore-platform-reqs \ + --no-interaction \ + --no-plugins \ + --no-scripts \ + --no-dev \ + --prefer-dist + +FROM node:20.18 AS frontend + +ARG GITLAB_PASSWORD + +RUN mkdir -p /app/public/build + +COPY package*.json tsconfig.json vite.config.ts .eslintrc.json .stylelintrc.json /app/ +COPY resources/ /app/resources/ +WORKDIR /app +RUN npm config set @uwil:registry https://lab.s-web.fr/api/v4/groups/ldc-web/-/packages/npm/ +RUN npm config set -- '//lab.s-web.fr/api/v4/groups/ldc-web/-/packages/npm/:_authToken' "${GITLAB_PASSWORD}" +RUN npm ci --no-audit --no-fund --loglevel=error && npm run prod + FROM registry.s-web.fr/ldc-web/projets/ldc-web-images-docker/uwil-production-8.5:${PHP_8_5_TAG} -COPY --chown=www-data:www-data . /app/srcs + +ARG USER=www-data + +COPY --chown=${USER}:${USER} . /app/srcs +COPY --from=vendor --chown=${USER}:${USER} /app/vendor/ /app/srcs/vendor/ +COPY --from=frontend --chown=${USER}:${USER} /app/public/build/ /app/srcs/public/build/ + USER root RUN chmod -R 755 /app/srcs/storage -USER www-data +USER ${USER}