Saturday, November 6, 2021

Running github actions on docker containers

 Running job on a docker container.

name: Container
on: push
jobs:
  node-docker:
    runs-on: ubuntu-latest
    container: 
      image: node:13.5.0-alpine3.10
    steps:
      - name: Log node version 
        run:  |
          node -v
          cat /etc/os-release


A sample Dockerfile for a nodejs app available.

#Dockerfile for nodejs app
FROM node:10.13-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD node app.js

#docker-compose.yml
version: '2.1'

services:
 app:
   build: .
   ports:
     - 3001:3000
 mongo:
   image: mongo
   ports:
     - "27017:27017"


docker-compose build
docker-compose start

Using the docker-compose multiple containers

#Multiple containers in github actions, using services instead of container section
name: Multiple Containers
on: push
jobs:
  node-docker:
    runs-on: ubuntu-latest
    services: 
      app:
        image: docker-username/node-api-imagename
        ports:
          - 3001:3000
      mongo:
        image: mongo
        ports:
          - "27017:27017"
    steps:
      - name: get user
        run:  curl http://localhost:3001/api/users

To use docker containers for individual steps of job.

#docker containers inside individual steps
name: Containers
on: push
jobs:
  docker-steps:
    runs-on: ubuntu-latest
    container:
      image: node:10.18.0-jessie
    steps:
      - name: log node version 
        run: node -v 
      - name: Step with docker
        uses: docker://node:12.14.1-alpine3.10
        with: 
          # Same as entrypoint in dockerfile but with different syntax
          entrypoint: '/bin/echo'
          args: 'Hello World' # for multiple values ['']
      - name: Step with docker
        uses: docker://node:12.14.1-alpine3.10
        with: 
          entrypoint: '/usr/local/bin/node'
          args: -v

No comments:

Post a Comment