From 8f55df83826ba728640c14df4fb158509e1933e1 Mon Sep 17 00:00:00 2001 From: sinkaroid Date: Sun, 11 Dec 2022 00:12:14 +0700 Subject: [PATCH] ci: dockerize jandapress --- .dockerignore | 2 + .github/workflows/docker.yml | 81 ++++++++++++++++++++++++++++++++++++ Dockerfile | 8 ++++ 3 files changed, 91 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker.yml create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5171c54 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..0cbdd5b --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,81 @@ +name: docker hub + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [ master ] + pull_request: + branches: [ master ] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains multiple jobs + build_test: + # The type of runner that the job will run on + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [14.x] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + - name: setup node + uses: actions/setup-node@master + with: + node-version: ${{ matrix.node-version }} + + # install applicaion dependencies + - name: Install dependencies + run: | + npm install + npm ci + + # build and test the apps + - name: build + run: | + npm run build + + push_to_Docker_Hub: + # The type of runner that the job will run on + runs-on: ubuntu-latest + # build docker image and push to docker hub + # only if the app build and test successfully + needs: [build_test] + + steps: + - name: checkout repo + uses: actions/checkout@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/nodejs-demo:latest + + - name: Run the image in a container + uses: addnab/docker-run-action@v3 + with: + image: ${{ secrets.DOCKERHUB_USERNAME }}/nodejs-demo:latest + run: | + echo "runing the docker image" + echo ${{ steps.docker_build.outputs.digest }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1f78247 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM node:latest +WORKDIR /srv/app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build +EXPOSE 3000 +CMD ["node", "build/src/index.js"] \ No newline at end of file