mirror of
https://github.com/docker/getting-started-app.git
synced 2025-07-04 08:21:08 -04:00
Compare commits
8 Commits
dependabot
...
6344b1e94a
Author | SHA1 | Date | |
---|---|---|---|
6344b1e94a | |||
a9987fa960 | |||
f7f497b936 | |||
a8e2658c48 | |||
1b8da5acb7 | |||
f2d13b8483 | |||
b5e58510b6 | |||
b13a9f1409 |
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
Dockerfile
|
34
.github/workflows/docker-image.yml
vendored
Normal file
34
.github/workflows/docker-image.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
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 }}
|
7
Dockerfile
Normal file
7
Dockerfile
Normal file
@ -0,0 +1,7 @@
|
||||
FROM node:18-alpine
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
RUN yarn install --production && yarn cache clean
|
||||
ENTRYPOINT [ "node" ]
|
||||
CMD [ "src/index.js" ]
|
||||
EXPOSE 3000
|
100
README.md
100
README.md
@ -1,5 +1,99 @@
|
||||
# Getting started
|
||||
|
||||
This repository is a sample application for users following the getting started guide at https://docs.docker.com/get-started/.
|
||||
# Getting Started
|
||||
|
||||
The application is based on the application from the getting started tutorial at https://github.com/docker/getting-started
|
||||
This repository is a sample application for users following the [Getting Started guide](https://docs.docker.com/get-started/) on Docker's official documentation.
|
||||
|
||||
The application is based on the tutorial at [docker/getting-started](https://github.com/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:**
|
||||
- Go to the [docker/getting-started-app](https://github.com/docker/getting-started-app) and fork the repository to your GitHub account.
|
||||
|
||||
2. **Set the remote URL:**
|
||||
- After forking, change the remote URL to your repository in the terminal:
|
||||
```bash
|
||||
git remote set-url origin https://github.com/abohmeed/getting-started-app.git
|
||||
```
|
||||
|
||||
3. **View the Dockerfile:**
|
||||
- In the terminal, view the Dockerfile:
|
||||
```bash
|
||||
cat Dockerfile
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
Here’s the `Dockerfile` included in this project:
|
||||
|
||||
```dockerfile
|
||||
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:
|
||||
|
||||
```yaml
|
||||
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 GitHub’s 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!
|
||||
|
@ -6,7 +6,7 @@
|
||||
"scripts": {
|
||||
"prettify": "prettier -l --write \"**/*.js\"",
|
||||
"test": "jest",
|
||||
"dev": "nodemon src/index.js"
|
||||
"dev": "nodemon -L src/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
|
18
yarn.lock
18
yarn.lock
@ -2782,19 +2782,19 @@ safe-buffer@5.2.1, safe-buffer@~5.2.0:
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
semver@^5.7.1:
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
|
||||
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
semver@^6.0.0, semver@^6.3.0:
|
||||
version "6.3.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.3.5:
|
||||
version "7.5.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
|
||||
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
||||
version "7.3.8"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
|
||||
integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
|
Reference in New Issue
Block a user