1
mirror of https://github.com/RealOrangeOne/notes.git synced 2024-06-29 04:37:00 +01:00

Add container for live deployment

This commit is contained in:
Jake Howard 2020-09-29 09:16:36 +01:00
parent ce545ea686
commit 5924476685
Signed by: jake
GPG Key ID: 57AFB45680EDD477
5 changed files with 108 additions and 0 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
node_modules/
.cache/
public/

View File

@ -3,6 +3,16 @@ name: CI
on: [push, pull_request]
jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build image
run: docker build . --tag notes
- name: Show image info
run: docker images
build:
runs-on: ubuntu-latest

21
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: Deploy
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build production container
run: docker build --tag docker.pkg.github.com/${GITHUB_REPOSITORY,,}/notes:latest .
- name: Log into GitHub Docker Registry
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login docker.pkg.github.com -u ${GITHUB_REPOSITORY%/*} --password-stdin
- name: Push the Docker container
run: docker push docker.pkg.github.com/${GITHUB_REPOSITORY,,}/notes:latest

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
# Site Build
FROM node:lts-slim as build
ENV NODE_ENV production
WORKDIR /app
COPY . /app
RUN npm ci --production
RUN npm run build
# Production run
FROM nginx:stable-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /app/public/ /usr/share/nginx/html

55
nginx.conf Normal file
View File

@ -0,0 +1,55 @@
user nginx;
worker_processes auto;
error_log stderr;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
access_log /dev/stdout;
server_tokens off;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_static on;
gzip_types *;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "same-origin";
add_header Strict-Transport-Security "max-age=5184000";
location /ping {
return 200 "PONG";
}
location ~* \.(png|jpg|gif|svg|txt|css|js|xml|eot|ttf|woff2|woff)$ {
add_header Cache-Control "public, max-age=0, must-revalidate";
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}
}