8 Commits

Author SHA1 Message Date
6344b1e94a Merge a9987fa960 into f2d13b8483 2024-10-19 21:40:05 +09:00
a9987fa960 Update README.md 2024-10-19 15:27:53 +03:00
f7f497b936 last change 2024-10-19 15:06:12 +03:00
a8e2658c48 last change 2024-10-19 15:01:12 +03:00
1b8da5acb7 add Dockerfile and pipeline 2024-10-18 18:16:16 +03:00
f2d13b8483 Merge pull request #48 from docker/add-dockerignore
add .dockerignore file
2024-06-05 17:55:15 +02:00
b5e58510b6 add .dockerignore file
Ignore node_modules in build to prevent issue with COPY or bind mounts
when dependencies already exist on the host's filesystem

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-05 10:19:14 +02:00
b13a9f1409 Update package.json
Add legacy polling (-L) to nodemon in order to work with volumes on Windows.
2023-10-12 13:26:12 -07:00
6 changed files with 146 additions and 9 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
node_modules
Dockerfile

34
.github/workflows/docker-image.yml vendored Normal file
View 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
View 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
View File

@ -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
Heres 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 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!

View File

@ -6,12 +6,12 @@
"scripts": { "scripts": {
"prettify": "prettier -l --write \"**/*.js\"", "prettify": "prettier -l --write \"**/*.js\"",
"test": "jest", "test": "jest",
"dev": "nodemon src/index.js" "dev": "nodemon -L src/index.js"
}, },
"dependencies": { "dependencies": {
"express": "^4.18.2", "express": "^4.18.2",
"mysql2": "^2.3.3", "mysql2": "^2.3.3",
"sqlite3": "^5.1.5", "sqlite3": "^5.1.2",
"uuid": "^9.0.0", "uuid": "^9.0.0",
"wait-port": "^1.0.4" "wait-port": "^1.0.4"
}, },

View File

@ -2930,10 +2930,10 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
sqlite3@^5.1.5: sqlite3@^5.1.2:
version "5.1.5" version "5.1.2"
resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.5.tgz#cf5a753c98914f3aa44b7bd057702fdca6abceb6" resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.2.tgz#f50d5b1482b6972fb650daf6f718e6507c6cfb0f"
integrity sha512-7sP16i4wI+yKnGOO2q2ijze7EjQ9US+Vw7DYYwxfFtqNZDGgBcEw0oeDaDvUTq66uJOzVd/z6MkIg+c9erSJKg== integrity sha512-D0Reg6pRWAFXFUnZKsszCI67tthFD8fGPewRddDCX6w4cYwz3MbvuwRICbL+YQjBAh9zbw+lJ/V9oC8nG5j6eg==
dependencies: dependencies:
"@mapbox/node-pre-gyp" "^1.0.0" "@mapbox/node-pre-gyp" "^1.0.0"
node-addon-api "^4.2.0" node-addon-api "^4.2.0"