initial commit

main
rrr-marble 4 years ago
commit 8883568a29

@ -0,0 +1,31 @@
# PREPARE
## Base setup
- `mkdir letsencrypt nginx_conf.d postgres_data`
- put site repo into ./treeralker
- put treetalker.guideget.ru.conf nginx config into ./nginx_conf.d
- put `pg_dumpall --clean | gzip > db.out.gz` into ./init_db
- fix treetalker/nodejs/config/config.env `HOST=` db address
- `chmod 999:999 postgres_data`
## Clean up
- delete ./node_modules dirs
- delete react release ./build dir
- remove `default_server` directive from treetalker.guideget.ru.conf
## Dev setup
- put options-ssl-nginx.conf into ./letsencrypt
## Prod setup
- disable `USE_LOCAL_CA=1`
- put real certs in ./letsencrypt
- remove "1000:443" mapping
- uncomment 80, 443 port mappings
- put real password for postgres
# RUN
`docker-compose build`
(watch out for 'npm WARN tar ENOENT: no such file or directory' **intermitent** failure https://github.com/npm/cli/issues/2319 et al.)
`docker-compose up`

@ -0,0 +1,38 @@
version: "3"
services:
frontend:
build:
context: ./treetalker
dockerfile: ../docker/Dockerfile.frontend
environment:
- USE_LOCAL_CA=1 # TODO: disable and put real certs in ./letsencrypt
- CERTBOT_EMAIL="admin@treetalker.guideget.ru"
volumes:
- ./nginx_conf.d:/etc/nginx/user_conf.d
- ./letsencrypt:/etc/letsencrypt
ports:
#- "80:80"
#- "443:443"
- "1000:443" # TODO: delete
backend:
build:
context: ./treetalker/nodejs
dockerfile: ../../docker/Dockerfile.backend
ports:
- "127.0.0.1:3010:3010"
db:
build:
context: ./init_db
dockerfile: ../docker/Dockerfile.db
environment:
POSTGRES_PASSWORD: "toCHANGE" # TODO: change to real password
volumes:
- ./postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"

@ -0,0 +1,17 @@
FROM node:14.7 AS build-stage
WORKDIR /app
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app
RUN npm install --global pm2
EXPOSE 3010
CMD ["pm2", "start", "server.js", "--attach"]

@ -0,0 +1,11 @@
FROM postgres:10.21-bullseye
ADD . /docker-entrypoint-initdb.d
RUN chmod a+r /docker-entrypoint-initdb.d/*
RUN chmod a+x /docker-entrypoint-initdb.d/1_init.sh
EXPOSE 5432
USER postgres

@ -0,0 +1,20 @@
FROM node:14.7 AS build-stage
WORKDIR /app
COPY package.json package-lock.json /app/
RUN npm install
RUN npm install apexcharts echarts
COPY . /app
RUN npm run build
FROM jonasal/nginx-certbot:2.4
WORKDIR /var/tmp/www/treetalker/build/
# muti-stage build
COPY --from=build-stage /app/build ./
EXPOSE 80 443

@ -0,0 +1,5 @@
#!/bin/bash
set -e
gunzip -c '/docker-entrypoint-initdb.d/db.out.gz' | psql --set ON_ERROR_STOP=0 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB"
Loading…
Cancel
Save