diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3d2cf54 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:14-alpine as build-deps +WORKDIR /usr/src/app +COPY package.json yarn.lock ./ +RUN yarn +COPY . ./ +RUN yarn build + +FROM nginx:stable-alpine +COPY --from=build-deps /usr/src/app/build /usr/share/nginx/html +COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/k8s/staging/deployment.yaml b/k8s/staging/deployment.yaml new file mode 100644 index 0000000..550cbb8 --- /dev/null +++ b/k8s/staging/deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ppob-frontend + namespace: empatnusabangsa-staging +spec: + selector: + matchLabels: + app: ppob-frontend + replicas: 1 + template: + metadata: + labels: + app: ppob-frontend + spec: + containers: + - name: ppob-frontend + image: registry-harbor.app.bangun-kreatif.com/empatnusabangsa/ppob-frontend:1 + ports: + - containerPort: 80 + imagePullSecrets: + - name: regcred diff --git a/k8s/staging/ingress.yaml b/k8s/staging/ingress.yaml new file mode 100644 index 0000000..a29b593 --- /dev/null +++ b/k8s/staging/ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ppob-frontend-ingress + namespace: empatnusabangsa-staging + annotations: + kubernetes.io/ingress.class: "traefik" + cert-manager.io/cluster-issuer: letsencrypt-prod + #traefik.ingress.kubernetes.io/router.middlewares: empatnusabangsa-staging-redirect-https@kubernetescrd +spec: + rules: + - host: "ppob-frontend.k3s.bangun-kreatif.com" + http: + paths: + - pathType: Prefix + path: / + backend: + service: + name: ppob-frontend + port: + number: 80 + tls: + - hosts: + - "ppob-frontend.k3s.bangun-kreatif.com" + secretName: ppob-frontend-k3s-bangun-kreatif-com-tls diff --git a/k8s/staging/middleware.yaml b/k8s/staging/middleware.yaml new file mode 100644 index 0000000..3b07aca --- /dev/null +++ b/k8s/staging/middleware.yaml @@ -0,0 +1,9 @@ +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: redirect-https + namespace: empatnusabangsa-staging +spec: + redirectScheme: + scheme: https + permanent: true \ No newline at end of file diff --git a/k8s/staging/namespace.yaml b/k8s/staging/namespace.yaml new file mode 100644 index 0000000..e81b142 --- /dev/null +++ b/k8s/staging/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: empatnusabangsa-staging diff --git a/k8s/staging/service.yaml b/k8s/staging/service.yaml new file mode 100644 index 0000000..35b409a --- /dev/null +++ b/k8s/staging/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: ppob-frontend + namespace: empatnusabangsa-staging + labels: + run: ppob-frontend +spec: + ports: + - port: 80 + protocol: TCP + selector: + app: ppob-frontend diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..40a878b --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,17 @@ +server { + + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + + error_page 500 502 503 504 /50x.html; + + location = /50x.html { + root /usr/share/nginx/html; + } + +}