diff --git a/.github/workflows/publish-backend-docker.yml b/.github/workflows/publish-backend-docker.yml new file mode 100644 index 0000000..b8dffdf --- /dev/null +++ b/.github/workflows/publish-backend-docker.yml @@ -0,0 +1,54 @@ +name: 배포 + +on: + push: + branches: + - backend-deploy + +jobs: + + push: + env: + working-directory: ./backend + runs-on: ubuntu-latest + if: github.event_name == 'push' + + + steps: + - uses: actions/checkout@v2 + + - name: create dotenv + working-directory: ${{env.working-directory}} + run: echo "${{ secrets.ENV }}" > .env + + - name: Log into GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Build image + working-directory: ${{env.working-directory}} + run: | + docker build -f Dockerfile .\ + -t ghcr.io/snuhcs-course/swpp-2023-project-team-13/backend-image:${GITHUB_SHA}\ + -t ghcr.io/snuhcs-course/swpp-2023-project-team-13/backend-image:latest + - name: Push image + working-directory: ${{env.working-directory}} + run: | + ghcr.io/snuhcs-course/swpp-2023-project-team-13/backend-image:${GITHUB_SHA} + ghcr.io/snuhcs-course/swpp-2023-project-team-13/backend-image:latest + deploy: + needs: push + name: 배포 + runs-on: [ self-hosted ] + steps: + - name: Log into GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Docker compose up + run: SHA=${GITHUB_SHA} docker-compose -f ~/docker-compose.yml up -d postgres fooriend-backend \ No newline at end of file diff --git a/backend/.gitignore b/backend/.gitignore index eb9d755..6624a99 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -34,4 +34,5 @@ lerna-debug.log* !.vscode/launch.json !.vscode/extensions.json -.env.dev \ No newline at end of file +.env.dev +.env \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..5e70983 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,21 @@ +FROM node:20-bullseye-slim + +RUN apt-get update \ + && apt-get install -y wget libpq-dev g++ make build-essential \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + + +COPY . . + +RUN npm install && npm run build + +RUN rm -r src + +EXPOSE 8765 + + +ENV NODE_ENV=production +ENTRYPOINT ["npm","run","start:prod"] +