From 22a6cf50e1fbbebb301eacf907e6e8474aea8837 Mon Sep 17 00:00:00 2001 From: RedrockJS Date: Tue, 27 May 2025 14:59:43 +0300 Subject: [PATCH 1/3] feat: add ci-cd --- Dockerfile | 41 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 10 ++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f0d9552 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +# Стадия сборки (builder) +FROM node:22-alpine AS builder + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем package.json и package-lock.json (или yarn.lock) +COPY package*.json ./ + +# Устанавливаем зависимости +RUN npm install --frozen-lockfile + +# Копируем все файлы проекта +COPY . . + +# Собираем приложение +RUN npm build + +# Стадия запуска (runner) +FROM node:22-alpine AS runner +WORKDIR /app + +# Включаем node пользователя +RUN addgroup -g 1001 -S nodejs +RUN adduser -S nextjs -u 1001 + +# Копируем необходимые файлы из стадии builder +COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next +COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules +COPY --from=builder --chown=nextjs:nodejs /app/package.json ./package.json +COPY --from=builder --chown=nextjs:nodejs /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/next.config.js ./next.config.js + +# Переключаем на пользователя nextjs +USER nextjs + +# Открываем порт +EXPOSE 3000 + +# Запускаем приложение +CMD ["npm", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9cd41d3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.8' + +services: + fire-exam: + image: smallbuster/fire-exam:latest + container_name: fire-exam + restart: unless-stopped + ports: + - "5002:80" + -- 2.49.1 From a49d97f22fa0d1f1e4fd9615085ac8204da63b42 Mon Sep 17 00:00:00 2001 From: RedrockJS Date: Tue, 27 May 2025 15:08:52 +0300 Subject: [PATCH 2/3] feat: add gh action --- .github/workflows/main.yaml | 53 +++++++++++++++++++++++ docker-compose.yml => docker-compose.yaml | 0 2 files changed, 53 insertions(+) create mode 100644 .github/workflows/main.yaml rename docker-compose.yml => docker-compose.yaml (100%) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..ed782a5 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,53 @@ +name: Build and deploy + +on: + push: + branches: + - 'main' + +jobs: + build: + runs-on: self-hosted + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + tags: smallbuster/fire-exam:latest + deploy: + runs-on: self-hosted + needs: build + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Compose + run: | + docker compose version + + - name: Stop and remove existing containers + run: | + docker compose -f docker-compose.yaml down || true + + - name: Pull Docker images + run: | + docker compose -f docker-compose.yaml pull + + - name: Start containers + run: | + docker compose -f docker-compose.yaml up -d \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yaml similarity index 100% rename from docker-compose.yml rename to docker-compose.yaml -- 2.49.1 From 8de596cb7e16d4437bbbc437ba426237c784c633 Mon Sep 17 00:00:00 2001 From: RedrockJS Date: Tue, 27 May 2025 15:35:52 +0300 Subject: [PATCH 3/3] fix: dockerfile --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 9cd41d3..9ac6fd0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,5 +6,5 @@ services: container_name: fire-exam restart: unless-stopped ports: - - "5002:80" + - "5002:3000" -- 2.49.1