Make website Docker ready
This commit is contained in:
25
.drone.yml
Normal file
25
.drone.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Build and push frontend image
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
dockerfile: frontend/Dockerfile
|
||||||
|
repo: docker.humenius.me/humenius/ts-onlinetime-ranks-frontend
|
||||||
|
tags: latest
|
||||||
|
- name: Build and push backend image
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
dockerfile: backend/Dockerfile
|
||||||
|
repo: docker.humenius.me/humenius/ts-onlinetime-ranks-backend
|
||||||
|
tags: latest
|
||||||
12
backend/Dockerfile
Normal file
12
backend/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM node:alpine AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY ./package.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM node:alpine
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app ./
|
||||||
|
CMD ["npm", "run", "start:prod"]
|
||||||
|
|
||||||
48
docker-compose.yml
Normal file
48
docker-compose.yml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
version: '3.7'
|
||||||
|
|
||||||
|
services:
|
||||||
|
frontend:
|
||||||
|
image: docker.humenius.me/humenius/ts-onlinetime-ranks-frontend:latest
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP + Redirect
|
||||||
|
- traefik.http.routers.aboutme.entrypoints=http
|
||||||
|
- traefik.http.routers.aboutme.rule=Host(`tsotr.humenius.me`)
|
||||||
|
- traefik.http.routers.aboutme.middlewares=aboutme-https-redirect
|
||||||
|
- traefik.http.middlewares.aboutme-https-redirect.redirectscheme.scheme=https
|
||||||
|
|
||||||
|
# HTTPS + Port + network
|
||||||
|
- traefik.http.routers.aboutme-secure.entrypoints=https
|
||||||
|
- traefik.http.routers.aboutme-secure.rule=(`tsotr.humenius.me`)
|
||||||
|
- traefik.http.routers.aboutme-secure.tls=true
|
||||||
|
- traefik.http.routers.aboutme-secure.tls.certresolver=http
|
||||||
|
- traefik.http.services.aboutme.loadbalancer.server.port=80
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
|
backend:
|
||||||
|
image: docker.humenius.me/humenius/ts-onlinetime-ranks-backend:latest
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
|
||||||
|
# HTTP + Redirect
|
||||||
|
- traefik.http.routers.aboutme.entrypoints=http
|
||||||
|
- traefik.http.routers.aboutme.rule=(Host(`tsotr.humenius.me`) && Path(`/api`))
|
||||||
|
- traefik.http.routers.aboutme.middlewares=aboutme-https-redirect
|
||||||
|
- traefik.http.middlewares.aboutme-https-redirect.redirectscheme.scheme=https
|
||||||
|
|
||||||
|
# HTTPS + Port + network
|
||||||
|
- traefik.http.routers.aboutme-secure.entrypoints=https
|
||||||
|
- traefik.http.routers.aboutme-secure.rule=(Host(`tsotr.humenius.me`) && Path(`/api`))
|
||||||
|
- traefik.http.routers.aboutme-secure.tls=true
|
||||||
|
- traefik.http.routers.aboutme-secure.tls.certresolver=http
|
||||||
|
- traefik.http.services.aboutme.loadbalancer.server.port=3500
|
||||||
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
15
frontend/Dockerfile
Normal file
15
frontend/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM node:alpine as builder
|
||||||
|
WORKDIR '/app'
|
||||||
|
COPY ./package.json ./
|
||||||
|
RUN yarn
|
||||||
|
COPY . .
|
||||||
|
RUN yarn build
|
||||||
|
|
||||||
|
FROM nginx:alpine
|
||||||
|
LABEL maintainer="Kevin Reis <contact@humenius.me>"
|
||||||
|
|
||||||
|
COPY --from=builder /app/build /usr/share/nginx/html
|
||||||
|
COPY nginx/nginx.conf /etc/nginx/conf.d
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
10
frontend/Dockerfile.dev
Normal file
10
frontend/Dockerfile.dev
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
FROM node:alpine
|
||||||
|
|
||||||
|
WORKDIR '/app'
|
||||||
|
|
||||||
|
COPY package.json .
|
||||||
|
RUN yarn
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
CMD ["yarn", "start"]
|
||||||
12
frontend/nginx/nginx.conf
Normal file
12
frontend/nginx/nginx.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "ts-onlinetime-ranks",
|
"name": "ts-onlinetime-ranks",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"proxy": "http://localhost:3500",
|
"proxy": "http://tsotr.humenius.me/api",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@testing-library/jest-dom": "^4.2.4",
|
"@testing-library/jest-dom": "^4.2.4",
|
||||||
"@testing-library/react": "^9.3.2",
|
"@testing-library/react": "^9.3.2",
|
||||||
|
|||||||
Reference in New Issue
Block a user