У сучасних робочих процесах розробки Docker став важливим інструментом для упакування додатків у контейнери. Контейнер — це легка, портативна та автономна одиниця, яка забезпечує безперебійне функціонування вашого додатку в різних середовищах. У цій статті ми розглянемо, як контейнеризувати простий додаток на Angular за допомогою Docker і керувати ним через Docker Compose, що спрощує процес розгортання та масштабування додатків.
3. Розуміння структури проєкту
Надайте базове пояснення структури папок вашого додатку на Angular, зокрема, як вона виглядатиме після контейнеризації. Це допоможе читачам зрозуміти, де що знаходиться.
Приклад структури проєкту:
/my-node-app
├── src
├── package.json
├── Dockerfile
├── docker-compose.yml
src
: Основна папка додатку на Angular.package.json
: Містить залежності та скрипти для запуску додатку.Dockerfile
: Текстовий файл, що містить інструкції для створення Docker-образу.docker-compose.yml
: Визначає сервіси та способи управління багатоконтейнерними налаштуваннями.
Ось конфігурація для контейнеризації Angular проєкту. Завдяки цій конфігурації ми можемо контейнеризувати додаток Angular.
файл Dockerfile
# Використовуємо офіційний образ Node.js для збірки Angular
FROM node:16
# Встановлюємо робочий каталог всередині контейнера
WORKDIR /app
# Копіюємо package.json та package-lock.json для встановлення залежностей
COPY package*.json ./
# Встановлюємо залежності Angular
RUN npm install
# Копіюємо код додатку в контейнер
COPY . .
# Будуємо додаток Angular
RUN npm run build --prod
# Використовуємо Nginx для обслуговування зібраного додатку Angular
FROM nginx:alpine
COPY --from=0 /app/dist /usr/share/nginx/html
# Відкриваємо порт для додатку Angular
EXPOSE 80
# Запускаємо сервер Nginx
CMD ["nginx", "-g", "daemon off;"]
Щоб зробити додаток готовим до виробництва, додайте файл compose docker-compose.yml
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "4200:4200"
environment:
- NODE_ENV=production
volumes:
- .:/usr/src/app
restart: always
Завдяки цьому ми можемо керувати різними середовищами та також додавати інші сервіси, такі як Postgres або MySQL, чи навіть будь-які сервіси для сповіщень.
Щоб отримати доступ до більше статей, приєднуйтесь до нашої спільноти на Discord для кращого навчального досвіду https://discord.gg/D2EU5N6z
Перекладено з: Containerizing an Angular Application using Docker