From 88a50ad02022236157746af306d04596cb365f37 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Thu, 17 Oct 2024 21:41:22 +0200 Subject: [PATCH] feat(ci/cd): dockerize and add traefik labels --- .dockerignore | 3 +++ .github/workflows/docker-build.yml | 28 ++++++++++++++++++++++++++++ Dockerfile | 23 +++++++++++++++++++++++ docker-compose.yml | 16 ++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker-build.yml create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d86f467 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +node_modules +.nuxt +.output diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..9ff61fb --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,28 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push Docker image + run: | + docker build -t pihkaal/lilou-cat:latest . + docker push pihkaal/lilou-cat:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..eb197c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:20-slim AS base + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +COPY . /app +WORKDIR /app + +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile + +FROM base AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +FROM base + +COPY --from=build /app/.output /app/.output + +EXPOSE 3000 +CMD ["node", ".output/server/index.mjs"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3bda08f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +services: + lilou-cat: + image: pihkaal/lilou-cat:latest + networks: + - web + labels: + - "traefik.enable=true" + - "traefik.http.routers.lilou-cat.rule=Host(`lilou.cat`)" + - "traefik.http.routers.lilou-cat.service=lilou-cat" + - "traefik.http.services.lilou-cat.loadbalancer.server.port=3000" + - "traefik.http.routers.lilou-cat.tls=true" + - "traefik.http.routers.lilou-cat.tls.certResolver=myresolver" + +networks: + web: + external: true