0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Chi Tiết Dockerize và Triển Khai Ứng Dụng Astro Đơn Giản

Đăng vào 3 tuần trước

• 3 phút đọc

Chủ đề:

dockerize

Hướng Dẫn Chi Tiết Dockerize và Triển Khai Ứng Dụng Astro Đơn Giản

Bài viết này sẽ hướng dẫn bạn cách Dockerize một ứng dụng Astro và triển khai ứng dụng đó lên nền tảng đám mây. Bạn sẽ tìm hiểu chi tiết về cách thức hoạt động của Dockerfile và các bước cần thiết để triển khai ứng dụng Astro của bạn một cách dễ dàng.

Nếu bạn chỉ muốn sao chép và dán mã, dưới đây là Dockerfile hoàn chỉnh sẽ tạo ra một image cho ứng dụng Astro của bạn:

dockerfile Copy
FROM node:20-alpine AS base
WORKDIR /app

COPY package.json package-lock.json ./

FROM base AS prod-deps
RUN npm install --omit=dev

FROM base AS build-deps
RUN npm install

FROM build-deps AS build
COPY . .
RUN npm run build

FROM base AS runtime
COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist

ENV HOST=0.0.0.0
ENV PORT=4321
EXPOSE 4321

CMD node ./dist/server/entry.mjs

Và đây là tệp .dockerignore mà bạn nên tạo:

.dockerignore Copy
.DS_Store
node_modules
dist

Để xây dựng và chạy image, hãy sử dụng các lệnh sau:

bash Copy
docker build -t astro .
docker run -p 4321:4321 astro

Thiết lập Dự Án Astro Cơ Bản

Trong hướng dẫn này, tôi giả định rằng bạn đã thiết lập một dự án Astro cơ bản. Nếu bạn có cấu hình khác, hãy điều chỉnh Dockerfile cho phù hợp với nhu cầu của bạn.

Thông thường, bạn sẽ chạy npm install và sau đó là npm run dev để phát triển cục bộ. Tuy nhiên, để triển khai, chúng ta cần xây dựng ứng dụng và phục vụ các tệp từ máy chủ. Do đó, chúng ta sẽ sử dụng npm run build để tạo các tệp và phục vụ chúng.

Phân Tích Chi Tiết Dockerfile

dockerfile Copy
FROM node:20-alpine AS base
WORKDIR /app

COPY package.json package-lock.json ./

FROM base AS prod-deps
RUN npm install --omit=dev

FROM base AS build-deps
RUN npm install

FROM build-deps AS build
COPY . .
RUN npm run build

FROM base AS runtime
COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist

ENV HOST=0.0.0.0
ENV PORT=4321
EXPOSE 4321

CMD node ./dist/server/entry.mjs

1. Khoảng Thời Gian Cơ Bản (Base Stage)

  • Chúng ta sử dụng Node.js 20 trên Alpine, tạo ra một image cơ sở gọn nhẹ.
  • Thiết lập thư mục làm việc và sao chép các tệp package để cài đặt các package phụ thuộc.

2. Giai Đoạn Cài Đặt Thư Viện Sản Xuất (Production Dependencies Stage)

  • Chúng ta chỉ cài đặt những dependencies cần thiết cho môi trường sản xuất mà bỏ qua các dependencies cho môi trường phát triển.

3. Giai Đoạn Cài Đặt Thư Viện Build (Build Dependencies Stage)

  • Chúng ta cài đặt tất cả các dependencies, bao gồm cả dependencies cho môi trường phát triển cần thiết để build ứng dụng.

4. Giai Đoạn Build (Build Stage)

  • Sao chép toàn bộ dự án và thực thi lệnh build.

5. Giai Đoạn Thời Gian Chạy (Runtime Stage)

  • Chúng ta bắt đầu lại từ image cơ sở.
  • Sao chép các dependencies sản xuất và các tệp đã build từ các giai đoạn trước đó.
  • Đặt các biến môi trường cho host và cổng.
  • Mở cổng 4321 (cổng mặc định của Astro).
  • Khởi động ứng dụng Astro bằng cách sử dụng điểm vào máy chủ đã build.

Cách tiếp cận nhiều giai đoạn này giúp tối ưu quy trình build và giữ cho kích thước image cuối cùng nhỏ hơn bằng cách tách biệt giữa môi trường build và runtime.

Đừng quên thêm tệp .dockerignore để loại bỏ các thư mục node_modules và dist, điều này sẽ cải thiện tốc độ build và giảm kích thước ứng dụng.

Triển Khai Ứng Dụng Astro Lên Sliplane

Bạn có thể triển khai container Docker này lên bất kỳ nhà cung cấp đám mây nào hỗ trợ Docker. Ví dụ, bạn có thể sử dụng các nền tảng như Heroku, DigitalOcean hoặc AWS ECS. Tuy nhiên, ở đây, tôi sẽ chỉ cho bạn cách triển khai trên Sliplane.

Sau khi đăng ký, bạn hãy tạo một dịch vụ mới bằng cách chọn kho lưu trữ Github của bạn. Tiếp theo, giữ lại các cài đặt mặc định và nhấn vào nút triển khai.

Khi triển khai hoàn tất, ứng dụng Astro của bạn sẽ có sẵn với tên miền phụ của sliplane.app, thường thì sẽ là tên dịch vụ của bạn.

Bạn cũng có thể xem nhật ký của ứng dụng, theo dõi các chỉ số như mức sử dụng CPU, bộ nhớ, và thêm tài nguyên nếu cần thiết. Mỗi khi bạn đẩy mã lên kho lưu trữ, Sliplane sẽ tự động triển khai ứng dụng của bạn.

Cảm ơn bạn đã theo dõi bài viết này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào