Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Docker Project/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM node:alpine
WORKDIR /usr/app
COPY ./package.json .
RUN npm install
COPY . .
CMD ["npm", "run", "serve"]
20 changes: 20 additions & 0 deletions Docker Project/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: '3'
services:
postgres:
image: 'postgres:latest'
environment:
- POSTGRES_PASSWORD=postgres_password
- POSTGRES_USER=postgres
- POSTGRES_DB=simple_blog_api
api:
depends_on:
- postgres
image: axelsilverdew/simple-api:latest
ports:
- '3000:3000'
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres_password
- POSTGRES_DB=simple_blog_api
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
6 changes: 6 additions & 0 deletions Docker Project/nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"watch": ["src"],
"exec": "npm run serve",
"ext": "ts"
}

36 changes: 36 additions & 0 deletions Docker Project/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "simple_todo_api",
"version": "1.0.0",
"description": "Simple Todo API for Docker/K8s project",
"main": "app.ts",
"scripts": {
"build": "tsc",
"serve": "ts-node src/server.ts",
"start": "nodemon",
"lint": "eslint"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@types/http-status-codes": "^1.2.0",
"@types/koa": "^2.13.4",
"@types/koa-bodyparser": "^4.3.2",
"@types/koa-router": "^7.4.4",
"@types/node": "^16.3.3",
"@typescript-eslint/eslint-plugin": "^4.28.3",
"@typescript-eslint/parser": "^4.28.3",
"eslint": "^7.31.0",
"eslint-config-airbnb": "^18.2.1",
"http-status-codes": "^2.1.4",
"koa": "^2.13.1",
"koa-bodyparser": "^4.3.0",
"koa-router": "^10.0.0",
"nodemon": "^2.0.12",
"pg": "^8.6.0",
"reflect-metadata": "^0.1.13",
"ts-node": "^10.1.0",
"typeorm": "^0.2.34",
"typescript": "^4.3.5"
}
}

13 changes: 13 additions & 0 deletions Docker Project/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "ES2018",
"module": "commonjs",
"lib": ["es2018"],
"outDir": "dist",
"rootDir": "src",
"noImplicitAny": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}

11 changes: 11 additions & 0 deletions Kubernetes Project/api-cluster-ip-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: api-cluster-ip-service
spec:
type: ClusterIP
selector:
component: api
ports:
- port: 3000
targetPort: 3000
31 changes: 31 additions & 0 deletions Kubernetes Project/api-deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
spec:
replicas: 1
selector:
matchLabels:
component: api
template:
metadata:
labels:
component: api
spec:
containers:
- name: api
image: axelsilverdew/simple-api:latest
ports:
- containerPort: 3000
env:
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: pgpassword
key: POSTGRES_PASSWORD
- name: POSTGRES_DB
value: simple_blog_api
- name: POSTGRES_HOST
value: postgres-cluster-ip-service
19 changes: 19 additions & 0 deletions Kubernetes Project/ingress-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
pathType: Prefix
backend:
service:
name: api-cluster-ip-service
port:
number: 3000
11 changes: 11 additions & 0 deletions Kubernetes Project/postgres-cluster-ip-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: postgres-cluster-ip-service
spec:
type: ClusterIP
selector:
component: postgres
ports:
- port: 5432
targetPort: 5432
27 changes: 27 additions & 0 deletions Kubernetes Project/postgres-deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
component: postgres
template:
metadata:
labels:
component: postgres
spec:
containers:
- name: postgres
image: postgres
ports:
- containerPort: 5432
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: pgpassword
key: POSTGRES_PASSWORD
- name: POSTGRES_DB
value: simple_blog_api