Docker
Docker je nástroj pro vytváření a spouštění kontejnerů. Kontejerem si můžeme představit balíček s aplikací a všemi jejími potřebnými součástkami.
Je to takový malý operační systém, který má předinstalované balíčky a nainstalované aplikace.
Můžeme tak velmi snadno použít např. větší aplikace typu databáze (MariaDB, PostgreSQL, MongoDB, …), abychom je mohli použít v našem projektu.
Díky Dockeru také zůstane náš počítač čistý a automaticky se nainstalují i odstraní závislosti pro běh naší aplikace.
⚠️ Prosím nainstalujte si nástroj Docker, budeme s ním pracovat v rámci lekce.
Dockerfile
Dockerfile je soubor, který obsahuje instrukce pro vytvoření nového kontejneru pro naši aplikaci.
Většinou jej už nepotřebujeme psát od začátku - jsou buď hotové nebo už téměř stejná konfigurace existuje
# Určime základní image, ze které chceme vycházet
FROM node:20-alpine AS build
# Říkáme, kde bude Docker pracovat (v jakém adresáři)
WORKDIR /app
# Nakopírujeme package.json a package-lock.json
COPY package*.json ./
# Nainstalujeme závislosti nebo spustíme skripty
RUN npm ci
# Nakopírujeme soubory, které potřebujeme pro build aplikace
COPY . .
# Říkáme, na jaký port bude možné přistupovat zvenku na kontejneru
EXPOSE 3000
# Spustíme aplikaci, která v kontejneru poběží na daném portu
CMD ["npm", "run", "start"]
Docker Compose
Docker Compose je nástroj pro spouštění více kontejnerů najednou.
Můžeme tak např. spustit databázi, webový server a naši aplikaci pomocí jediného příkazu.
Můžeme také zapojit jiné
Dockerfile.Docker compose taky vytvoří síť mezi kontejnery, takže např. databáze bude jednoduše přístupná i v naši aplikaci.
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:15-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- "5432:5432"