mirror of
https://github.com/docker/getting-started-app.git
synced 2026-03-03 10:44:25 -05:00
Compare commits
5 Commits
update-app
...
6344b1e94a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6344b1e94a | ||
|
|
a9987fa960 | ||
|
|
f7f497b936 | ||
|
|
a8e2658c48 | ||
|
|
1b8da5acb7 |
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!
|
||||||
|
|||||||
3349
package-lock.json
generated
3349
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
37
package.json
37
package.json
@@ -4,25 +4,30 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"prettify": "prettier -l --write \"**/*.js\"",
|
||||||
|
"test": "jest",
|
||||||
"dev": "nodemon -L src/index.js"
|
"dev": "nodemon -L src/index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^5.2.1",
|
"express": "^4.18.2",
|
||||||
"mysql2": "^3.16.1",
|
"mysql2": "^2.3.3",
|
||||||
"sqlite3": "^5.1.7",
|
"sqlite3": "^5.1.2",
|
||||||
"uuid": "^13.0.0",
|
"uuid": "^9.0.0",
|
||||||
"wait-port": "^1.1.0"
|
"wait-port": "^1.0.4"
|
||||||
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"ansi-regex": "5.0.1"
|
||||||
|
},
|
||||||
|
"prettier": {
|
||||||
|
"trailingComma": "all",
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"nodemon": "^3.1.9"
|
"jest": "^29.3.1",
|
||||||
},
|
"nodemon": "^2.0.20",
|
||||||
"overrides": {
|
"prettier": "^2.7.1"
|
||||||
"tar": "7.5.4",
|
|
||||||
"glob": "11.1.0",
|
|
||||||
"semver": "7.5.2",
|
|
||||||
"cross-spawn": "7.0.5",
|
|
||||||
"braces": "3.0.3",
|
|
||||||
"http-cache-semantics": "4.1.1",
|
|
||||||
"socks": "2.8.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user