|
|
|
## Schritt 1 - Docker Netzwerk einrichten und einen Container damit verbinden
|
|
|
|
|
|
|
|
Benötigtes Netzwerk erstellen:
|
|
|
|
|
|
|
|
docker run -p 127.0.0.1:3000:3000 -w/app
|
|
|
|
|
|
|
|
````
|
|
|
|
```docker
|
|
|
|
docker network create net1
|
|
|
|
|
|
|
|
#maria db container erstellen und starten
|
|
|
|
|
|
|
|
docker run --network net1 --network-alias mariaDB -v v2:/var/lib/mariadb -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=test mariadb:latest
|
|
|
|
d
|
|
|
|
#--networtk net1 = db mit erstellten netzwerk verbinden
|
|
|
|
#-v v2:/var/lib/mysql neues volume v2 erstelleb
|
|
|
|
#-e umgebungsvariablen pw und db name
|
|
|
|
#mariadb:lates aktuellestes mariadb runterladen
|
|
|
|
|
|
|
|
# auf db zugreifen
|
|
|
|
|
|
|
|
docker exec -it <container-ID> mariadb -u root -p
|
|
|
|
#zeigt test
|
|
|
|
|
|
|
|
#exec = befehl wird innerhalb des docker containers ausgeführt
|
|
|
|
#-it interaktive Sitzung innerhalb des Containers
|
|
|
|
#-u username
|
|
|
|
#-p passworteingabe
|
|
|
|
#dann SHOW DATABASES; geht auch direkt im befehl
|
|
|
|
```
|
|
|
|
````
|
|
|
|
|
|
|
|
## Schritt 2 - Container im Docker Netzwerk identifizieren
|
|
|
|
|
|
|
|
````
|
|
|
|
```docker
|
|
|
|
docker inspect <container id> | grep -i ipaddress
|
|
|
|
"SecondaryIPAddresses": null,
|
|
|
|
"IPAddress": "",
|
|
|
|
"IPAddress": "172.18.0.2",
|
|
|
|
#Pipe filtert docker inspect nach "ipaddress"
|
|
|
|
```
|
|
|
|
````
|
|
|
|
|
|
|
|
## Schritt 3 - ToDo-App Container ins Netzwerk integrieren
|
|
|
|
|
|
|
|
````
|
|
|
|
```docker
|
|
|
|
docker run -p 4200:3000 \
|
|
|
|
# --mount type=volume,src=v1,target=/etc/todos \
|
|
|
|
# --mount type=bind,src="$(pwd)",target=/app \
|
|
|
|
-w /app -v "$(pwd):/app"\
|
|
|
|
--network net1 \
|
|
|
|
-e MYSQL_HOST=mariaDB \
|
|
|
|
-e MYSQL_USER=root \
|
|
|
|
-e MYSQL_PASSWORD=root \
|
|
|
|
-e MYSQL_DB=test \
|
|
|
|
node:18-alpine \
|
|
|
|
sh -c "yarn install && yarn run dev"
|
|
|
|
#mit db verbidem
|
|
|
|
docker exec -it <docker-ID> mariadb -u root -p
|
|
|
|
#test db verwenden
|
|
|
|
USE test;
|
|
|
|
#einträge in der db abfragen
|
|
|
|
SELECT * FROM todo_items;
|
|
|
|
```Schritt 4 bis 8 - Docker Compose erstellen
|
|
|
|
````
|
|
|
|
|
|
|
|
````
|
|
|
|
```docker
|
|
|
|
docker run -p 4200:3000 \
|
|
|
|
# --mount type=volume,src=v1,target=/etc/todos \
|
|
|
|
# --mount type=bind,src="$(pwd)",target=/app \
|
|
|
|
-w /app -v "$(pwd):/app"\
|
|
|
|
--network net1 \
|
|
|
|
-e MYSQL_HOST=mariaDB \
|
|
|
|
-e MYSQL_USER=root \
|
|
|
|
-e MYSQL_PASSWORD=root \
|
|
|
|
-e MYSQL_DB=test \
|
|
|
|
node:18-alpine \
|
|
|
|
sh -c "yarn install && yarn run dev"
|
|
|
|
#mit db verbidem
|
|
|
|
docker exec -it <docker-ID> mariadb -u root -p
|
|
|
|
#test db verwenden
|
|
|
|
USE test;
|
|
|
|
#einträge in der db abfragen
|
|
|
|
SELECT * FROM todo_items;
|
|
|
|
```
|
|
|
|
````
|
|
|
|
|
|
|
|
## Schritt 4 bis 8 - Docker Compose erstellen
|
|
|
|
|
|
|
|
````
|
|
|
|
```docker
|
|
|
|
#touch docker-compose.yml
|
|
|
|
|
|
|
|
#version: '3.8'
|
|
|
|
|
|
|
|
services:
|
|
|
|
app:
|
|
|
|
image: node:lts-alpine
|
|
|
|
command: sh -c "yarn install && yarn run dev"
|
|
|
|
container_name: app
|
|
|
|
ports:
|
|
|
|
- "4200:3000"
|
|
|
|
working_dir: /app
|
|
|
|
volumes:
|
|
|
|
- ./:/app
|
|
|
|
environment:
|
|
|
|
MYSQL_HOST: mariaDB
|
|
|
|
MYSQL_USER: root
|
|
|
|
MYSQL_PASSWORD: root
|
|
|
|
MYSQL_DB: test
|
|
|
|
|
|
|
|
db:
|
|
|
|
image: mariadb:latest
|
|
|
|
container_name: mariaDB
|
|
|
|
environment:
|
|
|
|
- MYSQL_ROOT_PASSWORD=root
|
|
|
|
- MYSQL_DATABASE=test
|
|
|
|
volumes:
|
|
|
|
- ./volumes/mariadb:/var/lib/mysql
|
|
|
|
# manually create folder
|
|
|
|
|
|
|
|
#volumes:
|
|
|
|
# v2: {}
|
|
|
|
#docker-compose up
|
|
|
|
#volumes kann hier raus, weil die verzeichnisse manuell angegeben werden
|
|
|
|
```
|
|
|
|
````
|
|
|
|
|
|
|
|
# Skizze
|
|
|
|
|
|
|
|
[docker-compose.yml](https://gitlab.hsrw.eu/lv-swe/loesungsskizzen/praktikum-ii/-/blob/main/docker-compose.yml?ref_type=heads)
|
|
|
|
|
|
|
|
```
|
|
|
|
services:
|
|
|
|
app:
|
|
|
|
image: node:lts-alpine
|
|
|
|
command: sh -c "yarn install && yarn run dev"
|
|
|
|
ports:
|
|
|
|
- 127.0.0.1:4200:3000
|
|
|
|
working_dir: /app
|
|
|
|
volumes:
|
|
|
|
- ./:/app
|
|
|
|
environment:
|
|
|
|
MYSQL_HOST: db
|
|
|
|
MYSQL_USER: root
|
|
|
|
MYSQL_PASSWORD: secret
|
|
|
|
MYSQL_DB: todos
|
|
|
|
depends_on:
|
|
|
|
- db
|
|
|
|
|
|
|
|
db:
|
|
|
|
image: mariadb:latest
|
|
|
|
volumes:
|
|
|
|
- todo-mariadb-data:/var/lib/mysql
|
|
|
|
environment:
|
|
|
|
MARIADB_ROOT_PASSWORD: secret
|
|
|
|
MARIADB_DATABASE: todos
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
todo-mariadb-data:
|
|
|
|
```
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
 |
|
|
|
\ No newline at end of file |