From 9f8596e7e897b4463834e3a6f05027bab8a21a05 Mon Sep 17 00:00:00 2001 From: ADAMJR Date: Thu, 2 Dec 2021 19:35:08 +0000 Subject: [PATCH] Docker almost works --- backend/Dockerfile | 3 +-- backend/react-app-env.d.ts | 1 + backend/src/types | 1 - docker-compose.dev.yml | 14 +++++++++----- docker-compose.prod.yml | 6 ++---- docker/build.sh | 10 ++++++++++ docker/prune.sh | 4 ++++ docker/purge.sh | 5 +++++ docker/rm.sh | 8 ++++++++ docker/run.sh | 27 +++++++++++++++++++++++++++ echo | 6 ++++++ package.json | 7 ++++--- 12 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 backend/react-app-env.d.ts delete mode 120000 backend/src/types create mode 100644 docker/build.sh create mode 100644 docker/prune.sh create mode 100644 docker/purge.sh create mode 100644 docker/rm.sh create mode 100644 docker/run.sh create mode 100644 echo diff --git a/backend/Dockerfile b/backend/Dockerfile index 3b5368e0..68072f46 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -4,9 +4,8 @@ RUN addgroup app && adduser -SG app app WORKDIR /app COPY --chown=app:app package*.json ./ RUN npm i -COPY . . -RUN unlink /app/src/types COPY --chown=app:app --from=accord_types:latest /app /app/src/types +COPY . . EXPOSE 3000 # USER app diff --git a/backend/react-app-env.d.ts b/backend/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/backend/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/backend/src/types b/backend/src/types deleted file mode 120000 index 8788aa28..00000000 --- a/backend/src/types +++ /dev/null @@ -1 +0,0 @@ -../../types \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 739741e1..5126f952 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,22 +1,26 @@ version: '3.8' services: database: - image: mongo:4.4-focal + image: mongo:4.4-bionic ports: [27018:27017] volumes: [accord:/data/db] types: build: ./types backend: - depends_on: [database] + depends_on: [types, database] build: ./backend ports: [3000:3000] env_file: [./backend/.env] - volumes: [./backend:/app] + volumes: + - ./backend/assets:/app/assets + - ./backend/logs:/app/logs frontend: - depends_on: [database] + depends_on: [types, database] build: ./frontend ports: [4200:4200] env_file: [./frontend/env/.env.dev] - volumes: [./frontend:/app] + volumes: + - ./frontend:/app + - /app/src/types volumes: accord: \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 00f952cf..db45f01b 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,7 +3,7 @@ services: database: image: mongo:4.4-focal ports: [27017:27017] - volumes: [accord:/data/db] + volumes: [/var/lib/mongodb:/data/db] types: build: ./types backend: @@ -12,6 +12,4 @@ services: ports: [3000:3000] env_file: [./backend/.env] volumes: [./backend:/app] - entrypoint: npm run start:prod -volumes: - accord: \ No newline at end of file + entrypoint: npm run start:prod \ No newline at end of file diff --git a/docker/build.sh b/docker/build.sh new file mode 100644 index 00000000..29e98b03 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh +sudo docker pull mongo:4.4-bionic +sudo docker tag mongo:4.4-bionic accord_database + +(cd types; sudo docker build -t accord_types:latest .) +(cd backend; sudo docker build -t accord_backend:latest .) +(cd frontend; sudo docker build -t accord_frontend:latest .) + +sudo docker volume create accord 2>> /dev/null +sudo docker network create accord 2>> /dev/null \ No newline at end of file diff --git a/docker/prune.sh b/docker/prune.sh new file mode 100644 index 00000000..0ed456d3 --- /dev/null +++ b/docker/prune.sh @@ -0,0 +1,4 @@ +yes | docker container prune +yes | docker image prune +yes | docker network prune +yes | docker volume prune \ No newline at end of file diff --git a/docker/purge.sh b/docker/purge.sh new file mode 100644 index 00000000..729b14c6 --- /dev/null +++ b/docker/purge.sh @@ -0,0 +1,5 @@ +#!/bin/sh +docker container rm -f $(docker ps -aq) 2> /dev/null +docker image rm -f $(docker image ls -q) 2> /dev/null +docker volume rm -f $(docker volume ls -q) 2> /dev/null +docker network rm $(docker network ls -q) 2> /dev/null \ No newline at end of file diff --git a/docker/rm.sh b/docker/rm.sh new file mode 100644 index 00000000..6a3264a1 --- /dev/null +++ b/docker/rm.sh @@ -0,0 +1,8 @@ +docker container rm -f accord_database +docker container rm -f accord_backend +docker container rm -f accord_frontend + +docker image rm -f accord_database +docker image rm -f accord_types +docker image rm -f accord_backend +docker image rm -f accord_frontend \ No newline at end of file diff --git a/docker/run.sh b/docker/run.sh new file mode 100644 index 00000000..28ef2af4 --- /dev/null +++ b/docker/run.sh @@ -0,0 +1,27 @@ +#!/bin/sh +docker container rm -f accord_database +docker container rm -f accord_backend +docker container rm -f accord_frontend + +sudo docker run \ + --name accord_database \ + --hostname accord_database \ + -p 27018:27017 \ + -v accord:/data/db \ + -d accord_database:latest; + +sudo docker run \ + --name accord_backend \ + --hostname accord_backend \ + --env-file ./backend/.env \ + -p 3000:3000 \ + -u root \ + -d accord_backend:latest; + +sudo docker run \ + --name accord_frontend \ + --hostname accord_frontend \ + --env-file ./frontend/env/.env.dev \ + -p 4200:4200 \ + -u root \ + -d accord_frontend:latest; \ No newline at end of file diff --git a/echo b/echo new file mode 100644 index 00000000..e8b90750 --- /dev/null +++ b/echo @@ -0,0 +1,6 @@ +Error: No such container: No containers to delete +Error response from daemon: invalid reference format: repository name must be lowercase +Error: No such container: No containers to delete +Error response from daemon: invalid reference format: repository name must be lowercase +Error: No such container: No containers to delete +Error response from daemon: invalid reference format: repository name must be lowercase diff --git a/package.json b/package.json index 8338d9d3..5efa71a9 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,13 @@ { "scripts": { "dc:run": "sudo docker-compose -f docker-compose.dev.yml run database --service-ports", - "dc:up": "sudo docker-compose -f docker-compose.dev.yml up -d", + "dc:up": "sudo docker-compose -f docker-compose.dev.yml up -d --build", "dc:down": "sudo docker-compose -f docker-compose.dev.yml down", "dc:ps": "sudo docker-compose -f docker-compose.dev.yml ps", "dc:build": "sudo docker-compose -f docker-compose.prod.yml build", "dc:logs": "sudo docker-compose -f docker-compose.dev.yml logs -t", - "dc:logs:b": "npm run dc:logs | grep backend", - "dc:logs:f": "npm run dc:logs | grep frontend" + "dc:logs:db": "sudo npm run dc:logs | grep database", + "dc:logs:b": "sudo npm run dc:logs | grep backend", + "dc:logs:f": "sudo npm run dc:logs | grep frontend" } } \ No newline at end of file