diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1c71c317e4..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM node:13-alpine - -WORKDIR /usr/chapter/ - -# Install app dependencies -# A wildcard is used to ensure both package.json AND package-lock.json are copied -# where available (npm@5+) -COPY package*.json ./ - -RUN npm install - -# Bundle app source -COPY . . - -EXPOSE 5000 - -CMD [ "npm","run","dev" ] - diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index c3e0fdb24e..0000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: "3.7" -services: - db: - image: postgres:11 - environment: - - POSTGRES_USER=${DB_USER} - - POSTGRES_PASSWORD=${DB_PASSWORD} - - POSTGRES_DB=${DB_NAME} - ports: - - "54320:5432" - app: - depends_on: - - db - build: . - command: yarn dev - working_dir: /usr/chapter - environment: - - DB_URL=db - volumes: - - .:/usr/chapter - ports: - - "5000:5000" - client: - depends_on: - - app - build: ./client - ports: - - "3000:3000" - command: yarn dev - working_dir: /usr/chapter/client - volumes: - - ./client:/usr/chapter/client diff --git a/docker/docker.sh b/docker/docker.sh new file mode 100755 index 0000000000..32deb68074 --- /dev/null +++ b/docker/docker.sh @@ -0,0 +1,50 @@ +#!/bin/sh +##################################################################################### +### +### Docker utilities +### +##################################################################################### + +IMAGE_NAMES=(chapter_node chapter_app chapter_node_app chapter_client chapter_node_client) + +CONTAINER_NAMES=(chapter_db_1 chapter_app_1 chapter_client_1) + + + +REMOVE_ALL_IMAGES="remove_all_images" +REMOVE_ALL_CONTAINERS="remove_all_containers" + +if [ "$#" -eq 0 ] || [ $1 = "-h" ] || [ $1 = "--help" ]; then + echo "Usage: ./du.sh [OPTIONS] COMMAND [arg...]" + echo " ./du.sh [ -h | --help ]" + echo "" + echo "Options:" + echo " -h, --help Prints usage." + echo "" + echo "Commands:" + echo " $REMOVE_ALL_IMAGES - Remove all images." + echo " $REMOVE_ALL_CONTAINERS - Remove all containers." + exit +fi + +removeImages() { + docker rmi -f $(docker images -a -q) + docker images +} + +removeContainers() { + docker stop $(docker ps -aq) && docker rm $(docker ps -aq) + docker ps -a +} + +if [ $1 = $REMOVE_ALL_IMAGES ]; then + echo "Removing images ..." + removeImages + exit +fi + +if [ $1 = $REMOVE_ALL_CONTAINERS ]; then + echo "Removing all containers ..." + removeContainers + exit +fi diff --git a/docker/models/demo/.env b/docker/models/demo/.env new file mode 100644 index 0000000000..8ac6859c1e --- /dev/null +++ b/docker/models/demo/.env @@ -0,0 +1,17 @@ +# If running a local setup make sure to make IS_DOCKER unset +# IS_DOCKER= + + +# The folder this .env file is contained by expects the chapter directory to be 3 levels up +ROOT=../../.. + +DB_USER=postgres +DB_PASSWORD=password +DB_NAME=chapter +IS_DOCKER=true + + +CHAPTER_EMAIL=ourEmail@placeholder.place +EMAIL_USERNAME=emailUsernamePlaceholder +EMAIL_PASSWORD=emailPasswordPlaceholder +EMAIL_SERVICE=emailServicePlaceholder diff --git a/docker/models/demo/app/Dockerfile b/docker/models/demo/app/Dockerfile new file mode 100644 index 0000000000..3d8895e988 --- /dev/null +++ b/docker/models/demo/app/Dockerfile @@ -0,0 +1,10 @@ +FROM demo_nodebase_app + +WORKDIR /usr/chapter/ + +# Bundle app source +COPY . . + +EXPOSE 5000 + +CMD [ "npm","run","dev" ] diff --git a/client/Dockerfile b/docker/models/demo/client/Dockerfile similarity index 69% rename from client/Dockerfile rename to docker/models/demo/client/Dockerfile index 65aa3e58bc..2d44ef7c3b 100644 --- a/client/Dockerfile +++ b/docker/models/demo/client/Dockerfile @@ -1,15 +1,10 @@ -FROM node:13-alpine +FROM demo_nodebase_client # Setting working directory. All the path will be relative to WORKDIR WORKDIR /usr/chapter/client - -# Installing dependencies -COPY package*.json ./ -RUN npm install - # Copying source files -COPY . . +COPY ./client . # Building app RUN npm run build @@ -18,4 +13,3 @@ EXPOSE 3000 # Running the app CMD [ "npm", "run", "start" ] - diff --git a/docker/models/demo/docker-compose.yml b/docker/models/demo/docker-compose.yml new file mode 100644 index 0000000000..83cf6f85c1 --- /dev/null +++ b/docker/models/demo/docker-compose.yml @@ -0,0 +1,50 @@ +version: "3.7" +services: + db: + image: postgres:11 + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWORD} + - POSTGRES_DB=${DB_NAME} + ports: + - "54320:5432" + adminer: + image: adminer + environment: + - ADMINER_DESIGN=mancave + restart: always + ports: + - 8080:8080 + nodebase_app: + build: + context: ${ROOT} + dockerfile: ./docker/models/demo/node_app/Dockerfile + nodebase_client: + build: + context: ${ROOT} + dockerfile: ./docker/models/demo/node_client/Dockerfile + app: + depends_on: + - db + depends_on: + - nodebase_app + build: + context: ${ROOT} + dockerfile: ./docker/models/demo/app/Dockerfile + volumes: + - ./init.sh:/usr/chapter/init.sh + command: ./init.sh + environment: + - DB_URL=db + ports: + - 5000:5000 + client: + depends_on: + - app + depends_on: + - nodebase_client + build: + context: ${ROOT} + dockerfile: ./docker/models/demo/client/Dockerfile + ports: + - 3000:3000 diff --git a/docker/models/demo/init.sh b/docker/models/demo/init.sh new file mode 100755 index 0000000000..c59d6bd335 --- /dev/null +++ b/docker/models/demo/init.sh @@ -0,0 +1,18 @@ +#!/bin/sh +##################################################################################### +### +### Reset database +### +##################################################################################### + + + +export DB_PORT=5432 +export DB_USER=postgres +export DB_NAME=chapter +export DB_PASSWORD=password + +echo ------------ Running App Init Script ------------- +#sleep 20 +yarn db:reset +yarn dev diff --git a/docker/models/demo/node_app/Dockerfile b/docker/models/demo/node_app/Dockerfile new file mode 100644 index 0000000000..304bc8bf47 --- /dev/null +++ b/docker/models/demo/node_app/Dockerfile @@ -0,0 +1,10 @@ +FROM node:14-alpine + +# Setting working directory. All the path will be relative to WORKDIR +WORKDIR /usr/chapter + +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY ./package*.json ./ + +RUN npm install diff --git a/docker/models/demo/node_client/Dockerfile b/docker/models/demo/node_client/Dockerfile new file mode 100644 index 0000000000..3be055c648 --- /dev/null +++ b/docker/models/demo/node_client/Dockerfile @@ -0,0 +1,10 @@ +FROM node:14-alpine + +# Setting working directory. All the path will be relative to WORKDIR +WORKDIR /usr/chapter/client + +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY ./client/package*.json ./ + +RUN npm install diff --git a/docker/models/demo/readme.txt b/docker/models/demo/readme.txt new file mode 100644 index 0000000000..6fc1018acb --- /dev/null +++ b/docker/models/demo/readme.txt @@ -0,0 +1,27 @@ +Notes: +################################################################################ + +Rough notes: + +################################################################################ + + +IMPORTANT! +If either of the package.json files change its dependencies, then the corresponding nodebase image needs to be rebuilt. + + +To run the demo: +cd chapter/docker/models/demo +docker-compose up + +Environmental variables are stored in the .env file + +Adminer + +localhost:8080 + +System PostgreSQL +Server demo_db_1 +Username postgres +Password password +Database chapter diff --git a/package.json b/package.json index b66650f37d..cd91fd361d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "morgan": "^1.9.1", "next": "^9.5.1", "nodemailer": "^6.3.1", - "pg": "^7.12.1", + "pg": "^8.0.3", "pg-hstore": "^2.3.3", "react": "^16.13.1", "react-dom": "^16.13.1", @@ -85,7 +85,7 @@ "@types/next": "^8.0.6", "@types/node": "^13.7.1", "@types/nodemailer": "^6.2.2", - "@types/pg": "^7.11.2", + "@types/pg": "^7.14.5", "@types/react": "^16.9.9", "@types/react-dom": "^16.9.2", "@types/sinon-chai": "^3.2.3", @@ -127,7 +127,7 @@ } }, "engines": { - "node": "13.x", + "node": ">=13.x", "npm": ">= 6.0.0" } }