From 218c692a8b2284b0895238f45270a6e096ce6ee5 Mon Sep 17 00:00:00 2001 From: bottlewook Date: Thu, 22 Feb 2024 18:42:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20Docker=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 docker/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..5e3a7110 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,55 @@ +FROM node:18-alpine AS base + +FROM base AS deps +RUN apk add --no-cache libc6-compat + +WORKDIR /app + +COPY package.json yarn.lock* ./ +RUN \ + if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ + else echo "Lockfile not found." && exit 1; \ + fi + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +# This will do the trick, use the corresponding env file for each environment. +COPY .env.dev .env.production + +RUN \ + if [ -f yarn.lock ]; then yarn run build; \ + elif [ -f package-lock.json ]; then npm run build; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ + else echo "Lockfile not found." && exit 1; \ + fi + +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV production + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public + +# Set the correct permission for prerender cache +RUN mkdir .next +RUN chown nextjs:nodejs .next + +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 +ENV PORT 3000 + +ENV HOSTNAME "0.0.0.0" + +CMD ["node", "server.js"] \ No newline at end of file From a4f93a56244f73c0efd5ec54bd2a8b2230e208af Mon Sep 17 00:00:00 2001 From: bottlewook Date: Thu, 22 Feb 2024 18:42:47 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20cd-aws=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-aws.yml | 54 +++++++++++++++++++ .github/workflows/cd.yml | 3 +- .github/workflows/create_branch_for_issue.yml | 20 ------- 3 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/cd-aws.yml delete mode 100644 .github/workflows/create_branch_for_issue.yml diff --git a/.github/workflows/cd-aws.yml b/.github/workflows/cd-aws.yml new file mode 100644 index 00000000..49ee43f6 --- /dev/null +++ b/.github/workflows/cd-aws.yml @@ -0,0 +1,54 @@ +name: CD-AWS + +on: + push: + branches: + - main + +jobs: + Deploy-Production: + runs-on: ubuntu-latest + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v3 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Build, tag, and push docker image to Amazon ECR + env: + REGISTRY: ${{ steps.login-ecr.outputs.registry }} + REPOSITORY: washfit-client + IMAGE_TAG: latest + run: | + docker build -t $REGISTRY/$REPOSITORY:$IMAGE_TAG . + docker push $REGISTRY/$REPOSITORY:$IMAGE_TAG + + - name: Application Run + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.AWS_EC2_HOST }} + username: ${{ secrets.AWS_USERNAME }} + key: ${{ secrets.AWS_KEY}} + script: | + # Install Docker and Docker Compose + sudo dnf update + sudo dnf install docker + sudo systemctl start docker + sudo systemctl enable docker + sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + # Docker Compose + mkdir -p deploy + cd deploy + echo "${{ secrets.DOCKER_COMPOSE_AWS }}" > docker-compose.yml + + docker-compose pull + docker-compose down + docker-compose up -d \ No newline at end of file diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index dffe8ae0..b02d2cfc 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -7,7 +7,6 @@ env: on: push: branches: - - main - develop jobs: @@ -23,3 +22,5 @@ jobs: run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} + + diff --git a/.github/workflows/create_branch_for_issue.yml b/.github/workflows/create_branch_for_issue.yml deleted file mode 100644 index 0e0ff727..00000000 --- a/.github/workflows/create_branch_for_issue.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Create Branch For Branch -on: - issues: - types: [ assigned ] - issue_comment: - types: [ created ] - pull_request: - types: [ closed ] - -jobs: - create_issue_branch_job: - runs-on: ubuntu-latest - steps: - - name: Create Branch For Issue - id: Create_Branch_For_Issue - uses: robvanderleek/create-issue-branch@main - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Echo branch name - run: echo ${{ steps.Create_Branch_For_Issue.outputs.branchName }} \ No newline at end of file