From abf31f1f3257f5138acb2a020d99e0a589140fb0 Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 28 Sep 2020 08:52:49 -0600 Subject: [PATCH 1/9] feat: Chapter demo - running docker-compose up will create the app, populate the database, and start adminer --- docker-compose.yml | 32 ----------- docker/docker.sh | 50 +++++++++++++++++ .../models/demo/app/Dockerfile | 7 +-- .../models/demo/client}/Dockerfile | 9 ++- docker/models/demo/docker-compose.yml | 55 +++++++++++++++++++ docker/models/demo/init.sh | 18 ++++++ docker/models/demo/node_app/Dockerfile | 10 ++++ docker/models/demo/node_client/Dockerfile | 10 ++++ docker/models/demo/readme.txt | 27 +++++++++ 9 files changed, 177 insertions(+), 41 deletions(-) delete mode 100644 docker-compose.yml create mode 100755 docker/docker.sh rename Dockerfile => docker/models/demo/app/Dockerfile (78%) rename {client => docker/models/demo/client}/Dockerfile (73%) create mode 100644 docker/models/demo/docker-compose.yml create mode 100755 docker/models/demo/init.sh create mode 100644 docker/models/demo/node_app/Dockerfile create mode 100644 docker/models/demo/node_client/Dockerfile create mode 100644 docker/models/demo/readme.txt 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/Dockerfile b/docker/models/demo/app/Dockerfile similarity index 78% rename from Dockerfile rename to docker/models/demo/app/Dockerfile index 1c71c317e4..af38f762dd 100644 --- a/Dockerfile +++ b/docker/models/demo/app/Dockerfile @@ -1,13 +1,13 @@ -FROM node:13-alpine +FROM demo_nodebase_app 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 ./ +#COPY ./package*.json ./ -RUN npm install +#RUN npm install # Bundle app source COPY . . @@ -15,4 +15,3 @@ COPY . . EXPOSE 5000 CMD [ "npm","run","dev" ] - diff --git a/client/Dockerfile b/docker/models/demo/client/Dockerfile similarity index 73% rename from client/Dockerfile rename to docker/models/demo/client/Dockerfile index 65aa3e58bc..f991f5fe41 100644 --- a/client/Dockerfile +++ b/docker/models/demo/client/Dockerfile @@ -1,15 +1,15 @@ -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 +#COPY ./client/package*.json ./ +#RUN npm install # Copying source files -COPY . . +COPY ./client . # Building app RUN npm run build @@ -18,4 +18,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..1c997054a0 --- /dev/null +++ b/docker/models/demo/docker-compose.yml @@ -0,0 +1,55 @@ +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 + volumes: + - ${ROOT}/package.json:/usr/chapter/package.json + 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 + working_dir: /usr/chapter + environment: + - DB_URL=demo_db_1 + ports: + - "5000:5000" + client: + depends_on: + - app + depends_on: + - nodebase_client + build: + context: ${ROOT} + dockerfile: ./docker/models/demo/client/Dockerfile + ports: + - "3000:3000" + command: yarn dev + working_dir: /usr/chapter/client 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..5ea19c47eb --- /dev/null +++ b/docker/models/demo/node_app/Dockerfile @@ -0,0 +1,10 @@ +FROM node:13-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..69e4f7bbd2 --- /dev/null +++ b/docker/models/demo/node_client/Dockerfile @@ -0,0 +1,10 @@ +FROM node:13-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 From 8ee1f2580edb6c4b0251bfba7c4482d9ced8caa1 Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 28 Sep 2020 11:27:46 -0600 Subject: [PATCH 2/9] fix: removed unnecessary file mapping (and some commented out code) --- docker/models/demo/app/Dockerfile | 7 ------- docker/models/demo/client/Dockerfile | 5 ----- docker/models/demo/docker-compose.yml | 2 -- 3 files changed, 14 deletions(-) diff --git a/docker/models/demo/app/Dockerfile b/docker/models/demo/app/Dockerfile index af38f762dd..3d8895e988 100644 --- a/docker/models/demo/app/Dockerfile +++ b/docker/models/demo/app/Dockerfile @@ -2,13 +2,6 @@ FROM demo_nodebase_app 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 . . diff --git a/docker/models/demo/client/Dockerfile b/docker/models/demo/client/Dockerfile index f991f5fe41..2d44ef7c3b 100644 --- a/docker/models/demo/client/Dockerfile +++ b/docker/models/demo/client/Dockerfile @@ -3,11 +3,6 @@ FROM demo_nodebase_client # Setting working directory. All the path will be relative to WORKDIR WORKDIR /usr/chapter/client - -# Installing dependencies -#COPY ./client/package*.json ./ -#RUN npm install - # Copying source files COPY ./client . diff --git a/docker/models/demo/docker-compose.yml b/docker/models/demo/docker-compose.yml index 1c997054a0..477bff42eb 100644 --- a/docker/models/demo/docker-compose.yml +++ b/docker/models/demo/docker-compose.yml @@ -19,8 +19,6 @@ services: build: context: ${ROOT} dockerfile: ./docker/models/demo/node_app/Dockerfile - volumes: - - ${ROOT}/package.json:/usr/chapter/package.json nodebase_client: build: context: ${ROOT} From 12484b48f7c0ba0d0a060866ec34b70888b1a40a Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 28 Sep 2020 12:16:51 -0600 Subject: [PATCH 3/9] fix: removed unnecessary code --- docker/models/demo/docker-compose.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docker/models/demo/docker-compose.yml b/docker/models/demo/docker-compose.yml index 477bff42eb..4aff4e2a54 100644 --- a/docker/models/demo/docker-compose.yml +++ b/docker/models/demo/docker-compose.yml @@ -34,11 +34,8 @@ services: volumes: - ./init.sh:/usr/chapter/init.sh command: ./init.sh - working_dir: /usr/chapter environment: - DB_URL=demo_db_1 - ports: - - "5000:5000" client: depends_on: - app @@ -47,7 +44,3 @@ services: build: context: ${ROOT} dockerfile: ./docker/models/demo/client/Dockerfile - ports: - - "3000:3000" - command: yarn dev - working_dir: /usr/chapter/client From daf88011ca65dcdf29c2b3c00e158bc063623e6c Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 28 Sep 2020 16:25:01 -0600 Subject: [PATCH 4/9] fix: adding .env file. It was being excluded by the .gitignore --- docker/models/demo/.env | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 docker/models/demo/.env diff --git a/docker/models/demo/.env b/docker/models/demo/.env new file mode 100644 index 0000000000..d98f26951b --- /dev/null +++ b/docker/models/demo/.env @@ -0,0 +1,18 @@ +# 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_URL=demo_db_1 +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 From 30880be944720b7759a5797e2b328880529fd8b8 Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 28 Sep 2020 16:53:23 -0600 Subject: [PATCH 5/9] fix: removed DB_URL=demo_db_1 from .env file. Prefer it explicit in docker-compose.yml --- docker/models/demo/.env | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/models/demo/.env b/docker/models/demo/.env index d98f26951b..8ac6859c1e 100644 --- a/docker/models/demo/.env +++ b/docker/models/demo/.env @@ -5,7 +5,6 @@ # The folder this .env file is contained by expects the chapter directory to be 3 levels up ROOT=../../.. -DB_URL=demo_db_1 DB_USER=postgres DB_PASSWORD=password DB_NAME=chapter From 766127a97bdf9f45cab4a2119de527b8dc22b3bd Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Wed, 7 Oct 2020 12:39:16 -0600 Subject: [PATCH 6/9] fix: rolled back the last commit. Fixed the docker-compose.yml. Cleaner approach. --- docker/models/demo/docker-compose.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docker/models/demo/docker-compose.yml b/docker/models/demo/docker-compose.yml index 4aff4e2a54..83cf6f85c1 100644 --- a/docker/models/demo/docker-compose.yml +++ b/docker/models/demo/docker-compose.yml @@ -11,7 +11,7 @@ services: adminer: image: adminer environment: - - ADMINER_DESIGN='mancave' + - ADMINER_DESIGN=mancave restart: always ports: - 8080:8080 @@ -35,7 +35,9 @@ services: - ./init.sh:/usr/chapter/init.sh command: ./init.sh environment: - - DB_URL=demo_db_1 + - DB_URL=db + ports: + - 5000:5000 client: depends_on: - app @@ -44,3 +46,5 @@ services: build: context: ${ROOT} dockerfile: ./docker/models/demo/client/Dockerfile + ports: + - 3000:3000 From 0572e880f1a29c3b9f68366e808fa8f5712b6f3f Mon Sep 17 00:00:00 2001 From: tomnoland Date: Mon, 26 Oct 2020 20:59:10 -0600 Subject: [PATCH 7/9] Update Dockerfile Changed node version from 13 to 14 --- docker/models/demo/node_app/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/models/demo/node_app/Dockerfile b/docker/models/demo/node_app/Dockerfile index 5ea19c47eb..304bc8bf47 100644 --- a/docker/models/demo/node_app/Dockerfile +++ b/docker/models/demo/node_app/Dockerfile @@ -1,4 +1,4 @@ -FROM node:13-alpine +FROM node:14-alpine # Setting working directory. All the path will be relative to WORKDIR WORKDIR /usr/chapter From 60751760643369154b08b0a1517986a7909beeff Mon Sep 17 00:00:00 2001 From: tomnoland Date: Mon, 26 Oct 2020 21:00:17 -0600 Subject: [PATCH 8/9] Update Dockerfile Changed Node version from 13 to 14 --- docker/models/demo/node_client/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/models/demo/node_client/Dockerfile b/docker/models/demo/node_client/Dockerfile index 69e4f7bbd2..3be055c648 100644 --- a/docker/models/demo/node_client/Dockerfile +++ b/docker/models/demo/node_client/Dockerfile @@ -1,4 +1,4 @@ -FROM node:13-alpine +FROM node:14-alpine # Setting working directory. All the path will be relative to WORKDIR WORKDIR /usr/chapter/client From acc4281d763f28ae1e24168c07e9ef477c455a93 Mon Sep 17 00:00:00 2001 From: Tom Noland Date: Mon, 26 Oct 2020 21:52:48 -0600 Subject: [PATCH 9/9] Updated package.json --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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" } }