From cb71de5be1a61279b4ac230c5ddde1cd1017ea42 Mon Sep 17 00:00:00 2001 From: lucaCambi77 Date: Fri, 27 Jan 2023 03:42:54 +0100 Subject: [PATCH] [ BAEL-6068 ] - Communicating with Docker containers on the same machine (#13343) * fix: build clean up * feat: add docker compose 2 module, add communication same machine docker compose * fix: remove unused package lock file --- .../multi-module-caching/pom.xml | 5 +-- .../single-module-caching/pom.xml | 5 +-- docker-modules/docker-compose-2/README.md | 1 + .../communication_same_machine/Dockerfile | 3 ++ .../Dockerfile.node | 7 ++++ .../dns/docker-compose.yml | 20 +++++++++++ .../host_docker_internal/docker-compose.yml | 29 +++++++++++++++ .../host_docker_internal/index.js | 10 ++++++ .../host_docker_internal/package.json | 14 ++++++++ .../static_ip_bridge/docker-compose.yml | 34 ++++++++++++++++++ .../static_ip_macvlan/docker-compose.yml | 36 +++++++++++++++++++ docker-modules/docker-compose-2/pom.xml | 16 +++++++++ docker-modules/pom.xml | 1 + 13 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 docker-modules/docker-compose-2/README.md create mode 100644 docker-modules/docker-compose-2/communication_same_machine/Dockerfile create mode 100644 docker-modules/docker-compose-2/communication_same_machine/Dockerfile.node create mode 100644 docker-modules/docker-compose-2/communication_same_machine/dns/docker-compose.yml create mode 100644 docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/docker-compose.yml create mode 100644 docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/index.js create mode 100644 docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/package.json create mode 100644 docker-modules/docker-compose-2/communication_same_machine/static_ip_bridge/docker-compose.yml create mode 100644 docker-modules/docker-compose-2/communication_same_machine/static_ip_macvlan/docker-compose.yml create mode 100644 docker-modules/docker-compose-2/pom.xml diff --git a/docker-modules/docker-caching/multi-module-caching/pom.xml b/docker-modules/docker-caching/multi-module-caching/pom.xml index f85f00a28d..94a370453c 100644 --- a/docker-modules/docker-caching/multi-module-caching/pom.xml +++ b/docker-modules/docker-caching/multi-module-caching/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung multi-module-caching @@ -25,6 +25,7 @@ + UTF-8 1.8 31.1-jre diff --git a/docker-modules/docker-caching/single-module-caching/pom.xml b/docker-modules/docker-caching/single-module-caching/pom.xml index aa9720a273..4a4e53f1d3 100644 --- a/docker-modules/docker-caching/single-module-caching/pom.xml +++ b/docker-modules/docker-caching/single-module-caching/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung single-module-caching @@ -48,6 +48,7 @@ 8 8 + UTF-8 31.1-jre diff --git a/docker-modules/docker-compose-2/README.md b/docker-modules/docker-compose-2/README.md new file mode 100644 index 0000000000..729105e3fd --- /dev/null +++ b/docker-modules/docker-compose-2/README.md @@ -0,0 +1 @@ +## Relevant Articles: diff --git a/docker-modules/docker-compose-2/communication_same_machine/Dockerfile b/docker-modules/docker-compose-2/communication_same_machine/Dockerfile new file mode 100644 index 0000000000..a0c4ebe59a --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/Dockerfile @@ -0,0 +1,3 @@ +FROM alpine:latest +MAINTAINER baeldung.com +RUN apk update && apk add iputils && apk add bash && apk add curl \ No newline at end of file diff --git a/docker-modules/docker-compose-2/communication_same_machine/Dockerfile.node b/docker-modules/docker-compose-2/communication_same_machine/Dockerfile.node new file mode 100644 index 0000000000..6d8f0eff81 --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/Dockerfile.node @@ -0,0 +1,7 @@ +FROM node:8.16.1-alpine +WORKDIR /app +COPY host_docker_internal/package.json /app +COPY host_docker_internal/index.js /app +RUN npm install +CMD node index.js +EXPOSE 8080 \ No newline at end of file diff --git a/docker-modules/docker-compose-2/communication_same_machine/dns/docker-compose.yml b/docker-modules/docker-compose-2/communication_same_machine/dns/docker-compose.yml new file mode 100644 index 0000000000..0a06993241 --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/dns/docker-compose.yml @@ -0,0 +1,20 @@ +services: + alpine-app-1: + container_name: alpine-app-1 + image: alpine-app-1 + build: + context: .. + dockerfile: Dockerfile + tty: true + ports: + - 8081:8081 + + alpine-app-2: + container_name: alpine-app-2 + image: alpine-app-2 + build: + context: .. + dockerfile: Dockerfile + tty: true + ports: + - 8080:8080 diff --git a/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/docker-compose.yml b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/docker-compose.yml new file mode 100644 index 0000000000..8e7174a9a1 --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/docker-compose.yml @@ -0,0 +1,29 @@ +services: + alpine-app-1: + container_name: alpine-app-1 + extra_hosts: # for linux hosts since version 20.10 + - host.docker.internal:host-gateway + build: + context: .. + dockerfile: Dockerfile + image: alpine-app-1 + tty: true + networks: + - first-network + + node-app: + container_name: node-app + build: + context: .. + dockerfile: Dockerfile.node + image: node-app + ports: + - 8080:8080 + networks: + - second-network + +networks: + first-network: + driver: bridge + second-network: + driver: bridge \ No newline at end of file diff --git a/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/index.js b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/index.js new file mode 100644 index 0000000000..cefae028e5 --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/index.js @@ -0,0 +1,10 @@ +var express = require('express') +var app = express() + +app.get('/', function (req, res) { + res.send('Hello World!') +}) + +app.listen(8080, function () { + console.log('app listening on port 8080!') +}) \ No newline at end of file diff --git a/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/package.json b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/package.json new file mode 100644 index 0000000000..cde98b1cfd --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/host_docker_internal/package.json @@ -0,0 +1,14 @@ +{ + "name": "host_docker_internal", + "version": "1.0.0", + "description": "node js app", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Baeldung", + "license": "ISC", + "dependencies": { + "express": "^4.18.2" + } +} diff --git a/docker-modules/docker-compose-2/communication_same_machine/static_ip_bridge/docker-compose.yml b/docker-modules/docker-compose-2/communication_same_machine/static_ip_bridge/docker-compose.yml new file mode 100644 index 0000000000..0193bd72fb --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/static_ip_bridge/docker-compose.yml @@ -0,0 +1,34 @@ +services: + alpine-app-1: + container_name: alpine-app-1 + build: + context: .. + dockerfile: Dockerfile + image: alpine-app-1 + tty: true + ports: + - 8080:8080 + networks: + network-example: + ipv4_address: 10.5.0.2 + + alpine-app-2: + container_name: alpine-app-2 + build: + context: .. + dockerfile: Dockerfile + image: alpine-app-2 + tty: true + ports: + - 8081:8081 + networks: + network-example: + ipv4_address: 10.5.0.3 + +networks: + network-example: + driver: bridge + ipam: + config: + - subnet: 10.5.0.0/16 + gateway: 10.5.0.1 \ No newline at end of file diff --git a/docker-modules/docker-compose-2/communication_same_machine/static_ip_macvlan/docker-compose.yml b/docker-modules/docker-compose-2/communication_same_machine/static_ip_macvlan/docker-compose.yml new file mode 100644 index 0000000000..cef1a0b5cb --- /dev/null +++ b/docker-modules/docker-compose-2/communication_same_machine/static_ip_macvlan/docker-compose.yml @@ -0,0 +1,36 @@ +services: + alpine-app-1: + container_name: alpine-app-1 + build: + context: .. + dockerfile: Dockerfile + image: alpine-app-1 + tty: true + ports: + - 8080:8080 + networks: + network-example: + ipv4_address: 192.168.2.2 + + alpine-app-2: + container_name: alpine-app-2 + build: + context: .. + dockerfile: Dockerfile + image: alpine-app-2 + tty: true + ports: + - 8081:8081 + networks: + network-example: + ipv4_address: 192.168.2.3 + +networks: + network-example: + driver: macvlan + driver_opts: + parent: enp0s3 + ipam: + config: + - subnet: 192.168.2.0/24 + gateway: 192.168.2.1 \ No newline at end of file diff --git a/docker-modules/docker-compose-2/pom.xml b/docker-modules/docker-compose-2/pom.xml new file mode 100644 index 0000000000..851742309d --- /dev/null +++ b/docker-modules/docker-compose-2/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + docker-compose-2 + Demo project for Spring Boot and Docker - Module docker-compose-2 + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + \ No newline at end of file diff --git a/docker-modules/pom.xml b/docker-modules/pom.xml index e71307b7e0..1a87fa5d1c 100644 --- a/docker-modules/pom.xml +++ b/docker-modules/pom.xml @@ -18,6 +18,7 @@ docker-caching docker-compose + docker-compose-2 docker-containers docker-images docker-spring-boot