From ad09df6e2b3c693bf67fe4364ad7588bed67e7fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vili=20Sinerv=C3=A4?= Date: Wed, 15 Mar 2023 18:22:26 +0200 Subject: [PATCH] Part 2 exercises --- Part2/Exercise01/docker-compose.yml | 9 +++++++ Part2/Exercise02/docker-compose.yml | 8 ++++++ Part2/Exercise03/docker-compose.yml | 11 +++++++++ Part2/Exercise04/docker-compose.yml | 16 ++++++++++++ Part2/Exercise05/command.txt | 1 + Part2/Exercise06/docker-compose.yml | 25 +++++++++++++++++++ Part2/Exercise07/docker-compose.yml | 28 +++++++++++++++++++++ Part2/Exercise08/docker-compose.yml | 38 +++++++++++++++++++++++++++++ Part2/Exercise08/nginx.conf | 17 +++++++++++++ Part2/Exercise09/Dockerfile_back | 7 ++++++ Part2/Exercise09/Dockerfile_front | 9 +++++++ Part2/Exercise09/changes.txt | 3 +++ Part2/Exercise09/docker-compose.yml | 38 +++++++++++++++++++++++++++++ Part2/Exercise09/nginx.conf | 17 +++++++++++++ Part2/Exercise10/docker-compose.yml | 38 +++++++++++++++++++++++++++++ Part2/Exercise10/explanation.txt | 1 + 16 files changed, 266 insertions(+) create mode 100644 Part2/Exercise01/docker-compose.yml create mode 100644 Part2/Exercise02/docker-compose.yml create mode 100644 Part2/Exercise03/docker-compose.yml create mode 100644 Part2/Exercise04/docker-compose.yml create mode 100644 Part2/Exercise05/command.txt create mode 100644 Part2/Exercise06/docker-compose.yml create mode 100644 Part2/Exercise07/docker-compose.yml create mode 100644 Part2/Exercise08/docker-compose.yml create mode 100644 Part2/Exercise08/nginx.conf create mode 100644 Part2/Exercise09/Dockerfile_back create mode 100644 Part2/Exercise09/Dockerfile_front create mode 100644 Part2/Exercise09/changes.txt create mode 100644 Part2/Exercise09/docker-compose.yml create mode 100644 Part2/Exercise09/nginx.conf create mode 100644 Part2/Exercise10/docker-compose.yml create mode 100644 Part2/Exercise10/explanation.txt diff --git a/Part2/Exercise01/docker-compose.yml b/Part2/Exercise01/docker-compose.yml new file mode 100644 index 0000000..b57f3fd --- /dev/null +++ b/Part2/Exercise01/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3.8' + +services: + + simple-web-service: + image: devopsdockeruh/simple-web-service + build: . + volumes: + - ./text.log:/usr/src/app/text.log diff --git a/Part2/Exercise02/docker-compose.yml b/Part2/Exercise02/docker-compose.yml new file mode 100644 index 0000000..aa87bbe --- /dev/null +++ b/Part2/Exercise02/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.8' + +services: + simple-web-service: + image: devopsdockeruh/simple-web-service + command: "server" + ports: + - 8080:8080 diff --git a/Part2/Exercise03/docker-compose.yml b/Part2/Exercise03/docker-compose.yml new file mode 100644 index 0000000..3fba80f --- /dev/null +++ b/Part2/Exercise03/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.8' + +services: + backend: + image: example-backend:1.14 + ports: + - 8080:8080 + frontend: + image: example-frontend:1.14 + ports: + - 5000:5000 diff --git a/Part2/Exercise04/docker-compose.yml b/Part2/Exercise04/docker-compose.yml new file mode 100644 index 0000000..2cdcafb --- /dev/null +++ b/Part2/Exercise04/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.8' + +services: + backend: + image: example-backend:1.14 + ports: + - 8080:8080 + environment: + - REDIS_HOST=cache + frontend: + image: example-frontend:1.14 + ports: + - 5000:5000 + redis: + image: redis:7.0.9 + container_name: cache diff --git a/Part2/Exercise05/command.txt b/Part2/Exercise05/command.txt new file mode 100644 index 0000000..fbe4814 --- /dev/null +++ b/Part2/Exercise05/command.txt @@ -0,0 +1 @@ +docker compose up --scale compute=2 diff --git a/Part2/Exercise06/docker-compose.yml b/Part2/Exercise06/docker-compose.yml new file mode 100644 index 0000000..6dfec83 --- /dev/null +++ b/Part2/Exercise06/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.9' + +services: + db: + image: postgres:15.2-alpine + environment: + - POSTGRES_PASSWORD=postgres + container_name: db + backend: + image: example-backend:1.14 + ports: + - 8080:8080 + environment: + - REDIS_HOST=cache + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=postgres + depends_on: + - db + frontend: + image: example-frontend:1.14 + ports: + - 5000:5000 + redis: + image: redis:7.0.9 + container_name: cache diff --git a/Part2/Exercise07/docker-compose.yml b/Part2/Exercise07/docker-compose.yml new file mode 100644 index 0000000..5a47667 --- /dev/null +++ b/Part2/Exercise07/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3.9' + +services: + db: + image: postgres:15.2-alpine + environment: + - POSTGRES_PASSWORD=postgres + container_name: db + volumes: + - ./data:/var/lib/postgresql/data + + backend: + image: example-backend:1.14 + ports: + - 8080:8080 + environment: + - REDIS_HOST=cache + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=postgres + depends_on: + - db + frontend: + image: example-frontend:1.14 + ports: + - 5000:5000 + redis: + image: redis:7.0.9 + container_name: cache diff --git a/Part2/Exercise08/docker-compose.yml b/Part2/Exercise08/docker-compose.yml new file mode 100644 index 0000000..4a367b3 --- /dev/null +++ b/Part2/Exercise08/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.9' + +services: + db: + image: postgres:15.2-alpine + environment: + - POSTGRES_PASSWORD=postgres + container_name: db + volumes: + - ./data:/var/lib/postgresql/data + + backend: + image: example-backend:1.14 + environment: + - REDIS_HOST=cache + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=postgres + container_name: back + depends_on: + - db + + frontend: + image: example-frontend:1.14 + container_name: front + + redis: + image: redis:7.0.9 + container_name: cache + + proxy: + image: nginx:1.23.3 + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + ports: + - 80:80 + depends_on: + - backend + - frontend diff --git a/Part2/Exercise08/nginx.conf b/Part2/Exercise08/nginx.conf new file mode 100644 index 0000000..a2b0909 --- /dev/null +++ b/Part2/Exercise08/nginx.conf @@ -0,0 +1,17 @@ +events { worker_connections 1024; } + +http { + server { + listen 80; + location / { + proxy_pass http://front:5000; + } + + # configure here where requests to http://localhost/api/... + # are forwarded + location /api/ { + proxy_set_header Host $host; + proxy_pass http://back:8080/; + } + } +} diff --git a/Part2/Exercise09/Dockerfile_back b/Part2/Exercise09/Dockerfile_back new file mode 100644 index 0000000..d75109f --- /dev/null +++ b/Part2/Exercise09/Dockerfile_back @@ -0,0 +1,7 @@ +FROM golang:1.16 +EXPOSE 8080 +WORKDIR /usr/src/app +COPY . . +ENV REQUEST_ORIGIN=http://devops/ +RUN go build +CMD ["./server"] diff --git a/Part2/Exercise09/Dockerfile_front b/Part2/Exercise09/Dockerfile_front new file mode 100644 index 0000000..0aec3ac --- /dev/null +++ b/Part2/Exercise09/Dockerfile_front @@ -0,0 +1,9 @@ +FROM node:16.19 +EXPOSE 5000 +WORKDIR /usr/src/app +COPY package*.json ./ +COPY . . +ENV REACT_APP_BACKEND_URL=http://devops/api +RUN npm install && npm run build +RUN npm install -g serve +CMD ["serve", "-s", "-l", "5000", "build"] diff --git a/Part2/Exercise09/changes.txt b/Part2/Exercise09/changes.txt new file mode 100644 index 0000000..49f4505 --- /dev/null +++ b/Part2/Exercise09/changes.txt @@ -0,0 +1,3 @@ +I changed REQUEST_ORIGIN in the backend from http://devops:5000 to http://devops/ and BACKEND_URL from http://devops:8080 to http://devops/api. + +I alson updated the image versions in docker-compose.yml to match the new images. diff --git a/Part2/Exercise09/docker-compose.yml b/Part2/Exercise09/docker-compose.yml new file mode 100644 index 0000000..be64c78 --- /dev/null +++ b/Part2/Exercise09/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.9' + +services: + db: + image: postgres:15.2-alpine + environment: + - POSTGRES_PASSWORD=postgres + container_name: db + volumes: + - ./data:/var/lib/postgresql/data + + backend: + image: example-backend:2.9 + environment: + - REDIS_HOST=cache + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=postgres + container_name: back + depends_on: + - db + + frontend: + image: example-frontend:2.9 + container_name: front + + redis: + image: redis:7.0.9 + container_name: cache + + proxy: + image: nginx:1.23.3 + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + ports: + - 80:80 + depends_on: + - backend + - frontend diff --git a/Part2/Exercise09/nginx.conf b/Part2/Exercise09/nginx.conf new file mode 100644 index 0000000..a2b0909 --- /dev/null +++ b/Part2/Exercise09/nginx.conf @@ -0,0 +1,17 @@ +events { worker_connections 1024; } + +http { + server { + listen 80; + location / { + proxy_pass http://front:5000; + } + + # configure here where requests to http://localhost/api/... + # are forwarded + location /api/ { + proxy_set_header Host $host; + proxy_pass http://back:8080/; + } + } +} diff --git a/Part2/Exercise10/docker-compose.yml b/Part2/Exercise10/docker-compose.yml new file mode 100644 index 0000000..be64c78 --- /dev/null +++ b/Part2/Exercise10/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.9' + +services: + db: + image: postgres:15.2-alpine + environment: + - POSTGRES_PASSWORD=postgres + container_name: db + volumes: + - ./data:/var/lib/postgresql/data + + backend: + image: example-backend:2.9 + environment: + - REDIS_HOST=cache + - POSTGRES_HOST=db + - POSTGRES_PASSWORD=postgres + container_name: back + depends_on: + - db + + frontend: + image: example-frontend:2.9 + container_name: front + + redis: + image: redis:7.0.9 + container_name: cache + + proxy: + image: nginx:1.23.3 + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + ports: + - 80:80 + depends_on: + - backend + - frontend diff --git a/Part2/Exercise10/explanation.txt b/Part2/Exercise10/explanation.txt new file mode 100644 index 0000000..2e7ce17 --- /dev/null +++ b/Part2/Exercise10/explanation.txt @@ -0,0 +1 @@ +I had already naturally removed the ports from the docker-compose.yml when I did the proxy setup.