Skip to content

Commit a0c65fb

Browse files
committed
assignment-4
1 parent 1ca48e0 commit a0c65fb

File tree

26 files changed

+1221
-0
lines changed

26 files changed

+1221
-0
lines changed

assignment-4/Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM golang:1.18-alpine
2+
RUN mkdir /backend-app
3+
COPY . /backend-app
4+
WORKDIR /backend-app
5+
RUN go build -o main .
6+
CMD ["/backend-app/main"]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: backend-app-deploy
5+
labels:
6+
app: backend-app
7+
spec:
8+
selector:
9+
matchLabels:
10+
app: backend-app
11+
template:
12+
metadata:
13+
labels:
14+
app: backend-app
15+
spec:
16+
containers:
17+
- name: backend-app
18+
image: {{ .Values.backend-app.image }}
19+
env:
20+
- name: USERS_SVC_HOST
21+
value: "backend-app-host"
22+
- name: USERS_SVC_PORT
23+
value: "8080"
24+
ports:
25+
- containerPort: 8080
26+
name: backend-app
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: backendappsvc
5+
labels:
6+
app: backend-app
7+
spec:
8+
ports:
9+
- port: {{ .Values.backend-app.servicePort }}
10+
targetPort: 8080
11+
protocol: TCP
12+
selector:
13+
app: backend-app

assignment-4/backend-app/deploy.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
kubectl create -f backendapp-deploy.yaml
2+
3+
kubectl create -f backendapp-svc.yaml
4+
5+
kubectl get pods,deployments,svc -l app=backend-app
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: postgres
5+
spec:
6+
selector:
7+
matchLabels:
8+
app: postgres
9+
strategy:
10+
type: Recreate
11+
template:
12+
metadata:
13+
labels:
14+
app: postgres
15+
spec:
16+
containers:
17+
- image: postgres:alpine
18+
name: postgres
19+
env:
20+
- name: POSTGRES_DB
21+
value: store
22+
- name: POSTGRES_USER
23+
value: postgres
24+
- name: POSTGRES_PASSWORD
25+
value: root
26+
ports:
27+
- containerPort: 5432
28+
volumeMounts:
29+
- mountPath: "/var/lib/postgresql/data"
30+
name: "postgres"
31+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: postgres
5+
spec:
6+
ports:
7+
- port: 5432
8+
selector:
9+
app: postgres
10+
clusterIP: None

assignment-4/db/db.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package db
2+
3+
import (
4+
"database/sql"
5+
"time"
6+
7+
_ "github.com/jackc/pgconn"
8+
_ "github.com/jackc/pgx/v4"
9+
_ "github.com/jackc/pgx/v4/stdlib"
10+
)
11+
12+
type DB struct {
13+
SQL *sql.DB
14+
}
15+
16+
var dbConn = &DB{}
17+
18+
const maxOpenDbConn = 64
19+
const maxIdleDbConn = 64
20+
const maxDbLifeTime = 5 * time.Minute
21+
22+
func ConnectDB(desc string) (*DB, error) {
23+
24+
db, err := NewDatabase(desc)
25+
26+
if err != nil {
27+
panic(err)
28+
}
29+
30+
db.SetMaxOpenConns(maxOpenDbConn)
31+
db.SetMaxIdleConns(maxIdleDbConn)
32+
db.SetConnMaxLifetime(maxDbLifeTime)
33+
34+
dbConn.SQL = db
35+
36+
return dbConn, nil
37+
}
38+
39+
func NewDatabase(desc string) (*sql.DB, error) {
40+
db, err := sql.Open("pgx", desc)
41+
if err != nil {
42+
return nil, err
43+
}
44+
45+
if err = db.Ping(); err != nil {
46+
return nil, err
47+
}
48+
49+
return db, nil
50+
}
51+
52+
func GetDB() *sql.DB {
53+
return dbConn.SQL
54+
}

assignment-4/docker-compose.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: "3.8"
2+
3+
services:
4+
db:
5+
image: postgres:alpine
6+
container_name: "postgres"
7+
ports:
8+
- "5432:5432"
9+
environment:
10+
- POSTGRES_DB=store
11+
- POSTGRES_USER=postgres
12+
- POSTGRES_PASSWORD=root
13+
networks:
14+
- fullstack
15+
volumes:
16+
- database_postgres:/var/lib/postgresql/data
17+
18+
web:
19+
build: .
20+
container_name: "backend-app"
21+
command: ["go", "run", "main.go"]
22+
ports:
23+
- "8080:8080"
24+
depends_on:
25+
- db
26+
networks:
27+
- fullstack
28+
29+
volumes:
30+
database_postgres:
31+
32+
networks:
33+
fullstack:
34+
driver: bridge

assignment-4/go.mod

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module github.com/practice
2+
3+
go 1.18
4+
5+
require (
6+
github.com/gorilla/mux v1.8.0 // indirect
7+
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
8+
github.com/jackc/pgconn v1.14.0 // indirect
9+
github.com/jackc/pgio v1.0.0 // indirect
10+
github.com/jackc/pgpassfile v1.0.0 // indirect
11+
github.com/jackc/pgproto3/v2 v2.3.2 // indirect
12+
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
13+
github.com/jackc/pgtype v1.14.0 // indirect
14+
github.com/jackc/pgx/v4 v4.18.1 // indirect
15+
golang.org/x/crypto v0.6.0 // indirect
16+
golang.org/x/text v0.7.0 // indirect
17+
)

assignment-4/go.sum

Lines changed: 192 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)