diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ae7ece6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +/.drone.yml +/.nuxt +/.output +/docker +/node_modules +/.git* diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..e7dc00e --- /dev/null +++ b/.drone.yml @@ -0,0 +1,69 @@ +--- +kind: pipeline +type: docker +name: testing + +steps: +- name: build + image: docker:dind + environment: + COMPOSE_PROJECT_NAME: dav-testing-${DRONE_COMMIT_BRANCH//\//-} + NUXT_APP_BASE_URL: /${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_CHECK_HTTP: /${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_TAGS: urlprefix-testing.asycn.io/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/* + commands: + - docker build --target static --output /drone/src/.output/public -f docker/Dockerfile . + - docker compose -f docker/docker-compose.yml -f docker/docker-compose.labels.yml up --build -d + volumes: + - name: dockersock + path: /var/run/docker.sock + +- name: publish + image: appleboy/drone-scp + settings: + username: + from_secret: ssh_username + password: + from_secret: ssh_password + host: open.us.org + port: 22 + source: /drone/src/.output/public/ + target: /dav/www/ + debug: true + when: + branch: + - main + event: + - push + +- name: notify + image: appleboy/drone-telegram + when: + status: + - success + settings: + token: + from_secret: telegram_token + to: + from_secret: telegram_chat_id_atr + format: markdown + message: > + {{#success build.status}} + ✅ `{{commit.email}}` a mis à jour la branche `{{commit.branch}}` sur le repo `{{repo.name}}`: + ``` + {{commit.message}} + ``` + 🌐 https://testing.asycn.io/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/{{commit.branch}}/ + {{else}} + ❌ Le build #{{build.number}} du repo `{{repo.name}}` est un gros fail... + 📝 Commit de {{commit.email}} sur la branche `{{commit.branch}}`: + ``` + {{commit.message}} + ``` + 🌐 {{ build.link }} + {{/success}} + +volumes: +- name: dockersock + host: + path: /var/run/docker.sock diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..5db03c8 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,20 @@ +ARG NODE_VERSION=22 +FROM node:${NODE_VERSION}-alpine AS base +WORKDIR /app + +FROM base AS build +COPY package.json package-lock.json ./ +RUN npm install +COPY --link ./ ./ +RUN npm run build + +FROM build AS master +RUN npm run generate + +FROM scratch AS static +COPY --from=master /app/.output/public . + +FROM base AS prod +ENV NODE_ENV=production +COPY --from=master /app/.output /app/.output +CMD [ "node", ".output/server/index.mjs" ] diff --git a/docker/docker-compose.labels.yml b/docker/docker-compose.labels.yml new file mode 100644 index 0000000..01a2509 --- /dev/null +++ b/docker/docker-compose.labels.yml @@ -0,0 +1,8 @@ +version: "3" + +services: + front: + labels: + - SERVICE_3000_CHECK_HTTP=${SERVICE_3000_CHECK_HTTP:-/} + - SERVICE_3000_NAME=${SERVICE_3000_NAME:-${COMPOSE_PROJECT_NAME:-adv}-front-3000} + - SERVICE_3000_TAGS=${SERVICE_3000_TAGS:-urlprefix-adv.localhost/} diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml new file mode 100644 index 0000000..9473895 --- /dev/null +++ b/docker/docker-compose.local.yml @@ -0,0 +1,7 @@ +version: "3" + +services: + front: + ports: + - 3000:3000 + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..6c9f3d2 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" + +services: + front: + build: + context: .. + dockerfile: docker/Dockerfile + environment: + NODE_ENV: ${NODE_ENV:-production} + NUXT_APP_BASE_URL: ${NUXT_APP_BASE_URL:-/} + ports: + - 3000