From e27bc523880897d9e189b208657c29720298733a Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Mon, 23 Nov 2020 14:09:33 +0300 Subject: [PATCH] add docker config and CI config (#109) --- .github/workflows/build-and-push.yml | 23 +++++++++++++++++++++++ docker-compose.yml | 13 +++++++++++++ docker/Dockerfile.prod | 12 ++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 .github/workflows/build-and-push.yml create mode 100644 docker-compose.yml create mode 100644 docker/Dockerfile.prod diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml new file mode 100644 index 0000000..eb496c5 --- /dev/null +++ b/.github/workflows/build-and-push.yml @@ -0,0 +1,23 @@ +name: Build and deploy + +on: [push] + +env: + DOCKER_REPO: ${{ secrets.DOCKER_USERNAME }}/codex-docs + +jobs: + build_and_deploy: + runs-on: ubuntu-20.04 + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Build and push docker image + uses: docker/build-push-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + repository: ${{ env.DOCKER_REPO }} + tag_with_ref: true + dockerfile: docker/Dockerfile.prod + push: ${{ endsWith(github.ref, '/stage') || endsWith(github.ref, '/prod') }} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5ea87f5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.2" +services: + docs: + build: + dockerfile: docker/Dockerfile.prod + context: . + ports: + - 5000:3000 + volumes: + - ./.codexdocsrc:/usr/src/app/.codexdocsrc:ro + - ./config/production.json:/usr/src/app/config/production.json:ro + - ./public/uploads:/usr/src/app/public/uploads + - ./.db:/usr/src/app/.db diff --git a/docker/Dockerfile.prod b/docker/Dockerfile.prod new file mode 100644 index 0000000..581144f --- /dev/null +++ b/docker/Dockerfile.prod @@ -0,0 +1,12 @@ +FROM node:12.14.1-alpine3.11 + +WORKDIR /usr/src/app +RUN apk add --no-cache git gcc g++ python make musl-dev + +COPY package.json yarn.lock ./ + +RUN yarn install --prod + +COPY . . + +CMD ["yarn", "start"]