A simple application for the getting started guide in Docker's documentation
Go to file
2024-10-19 15:27:53 +03:00
.github/workflows last change 2024-10-19 15:01:12 +03:00
spec first commit 2023-07-17 10:17:25 -07:00
src first commit 2023-07-17 10:17:25 -07:00
.dockerignore add .dockerignore file 2024-06-05 10:19:14 +02:00
Dockerfile last change 2024-10-19 15:06:12 +03:00
package.json Update package.json 2023-10-12 13:26:12 -07:00
README.md Update README.md 2024-10-19 15:27:53 +03:00
yarn.lock first commit 2023-07-17 10:17:25 -07:00

Getting Started

This repository is a sample application for users following the Getting Started guide on Docker's official documentation.

The application is based on the tutorial at docker/getting-started.

Getting Started App with Docker CI/CD

This project demonstrates how to build, test, and deploy a Dockerized application using GitHub Actions for CI/CD.

How to Fork and Set Up

  1. Fork the repository:

  2. Set the remote URL:

    • After forking, change the remote URL to your repository in the terminal:
      git remote set-url origin https://github.com/abohmeed/getting-started-app.git
      
  3. View the Dockerfile:

    • In the terminal, view the Dockerfile:
      cat Dockerfile
      

Dockerfile

Heres the Dockerfile included in this project:

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production && yarn cache clean
ENTRYPOINT [ "node" ]
CMD [ "src/index.js" ]
EXPOSE 3000

GitHub Actions CI/CD Workflow

This project includes a GitHub Actions workflow for automatically building and pushing Docker images to the GitHub Container Registry.

Workflow File

The .github/workflows/docker-image.yml file contains the CI/CD pipeline:

name: Docker Image CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Log in to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ secrets.GITHUB_TOKEN }}

    - name: Build and push Docker image
      uses: docker/build-push-action@v5
      with:
        context: .
        push: true
        tags: |
          ghcr.io/${{ github.repository_owner }}/abohmeed/getting-started:latest
          ghcr.io/${{ github.repository_owner }}/abohmeed/getting-started:${{ github.sha }}          

Workflow Steps:

  • Checkout code: Fetches the repository content.
  • Set up Docker Buildx: Prepares Docker Buildx for multi-platform builds.
  • Log in to GitHub Container Registry: Authenticates the Docker client with GitHubs Container Registry.
  • Build and push: Builds the Docker image and pushes it to the GitHub Container Registry with two tags: latest and the commit SHA.

Conclusion

This setup allows you to continuously integrate and deploy Docker images to the GitHub Container Registry. Simply push or open a pull request to the main branch, and the workflow will handle the rest!