Hook
Docker дозволяє пакувати ваш застосунок і всі його залежності в один ізольований образ. Це означає, що ваш код працює однаково на будь‑якому сервері без “працює у мене”.
Problem / Context
Раніше для розгортання доводилось встановлювати різне ПЗ на різних серверах, налаштовувати бібліотеки, вирішувати конфлікти версій. Результат – «у мене все працює», а у продакшн‑середовища – ні.
Why it matters
Контейнери забезпечують стабільність, швидке масштабування і спрощують CI/CD‑потоки. Ви економите час на налаштування середовища і знижуєте ризик помилок під час релізу.
How to do it
- Встановити Docker Engine
sudo apt‑update sudo apt‑install -y ca-certificates curl gnupg sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt‑update sudo apt‑install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin - Перевірити встановлення
docker run --rm hello-world - Створити Dockerfile для простого Node.js‑додатку:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . CMD ["node", "index.js"] - Зібрати образ
docker build -t my‑app . - Запустити контейнер
Тепер ваш додаток доступний заdocker run -d -p 3000:3000 --name my‑app‑c my‑apphttp://localhost:3000.
Anti‑patterns
- Запускати контейнер від root – краще створити користувача всередині образу.
- Не вказувати
EXPOSEу Dockerfile – ускладнює розуміння портів. - Хитати великі образи – використовуйте Alpine‑based базові образи, щоб зменшити розмір.
Conclusion / Action plan
- Встановити Docker на вашій машині.
- Створити простий Dockerfile для одного з ваших проектів.
- Додати Docker‑команди у ваш CI‑pipeline.
- Після успішного запуску розглянути
docker‑composeдля мультіконтейнерних додатків.