0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Chi Tiết Sử Dụng File `.env` Trong Ứng Dụng Spring Boot Triển Khai Trên Docker

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

• 4 phút đọc

Chủ đề:

DevOpsbuild docker

Hướng Dẫn Chi Tiết Sử Dụng File .env Trong Ứng Dụng Spring Boot Triển Khai Trên Docker

Trong quá trình phát triển và triển khai ứng dụng, việc quản lý các biến môi trường (environment variables) hết sức quan trọng. Biến môi trường giúp bạn tùy chỉnh cấu hình ứng dụng mà không cần phải thay đổi mã nguồn, đồng thời đảm bảo an toàn thông tin nhạy cảm bằng cách không lưu trữ chúng trực tiếp trong mã nguồn. Đặc biệt, khi làm việc với Spring Boot và Docker, việc sử dụng file .env là một cách tiếp cận phổ biến và hiệu quả để quản lý các biến môi trường. Bài viết này sẽ hướng dẫn bạn chi tiết về cách sử dụng file .env cho dự án Spring Boot với Docker, giúp bạn dễ dàng quản lý và triển khai ứng dụng.

1. Giới Thiệu Về Sử Dụng File .env Trong Ứng Dụng Spring Boot

Trong quá trình phát triển ứng dụng, việc tách biệt cấu hình ứng dụng khỏi mã nguồn là một thực hành tốt, giúp bạn dễ dàng quản lý và thay đổi cấu hình cho các môi trường khác nhau như development, staging, và production. Điều này rất cần thiết khi triển khai ứng dụng trên các môi trường có cấu hình khác nhau như cơ sở dữ liệu, địa chỉ máy chủ, và thông tin xác thực.

Spring Boot cho phép bạn quản lý các biến môi trường thông qua file .env, giúp định nghĩa các biến và giá trị tương ứng. Ứng dụng Spring Boot sẽ tự động đọc và sử dụng các giá trị này để cấu hình đúng với môi trường triển khai.

2. Hướng Dẫn Cấu Hình Và Sử Dụng File .env Trong Ứng Dụng Spring Boot Triển Khai Trên Docker

Trong phần này, chúng ta sẽ xem xét một ví dụ cụ thể về cách sử dụng file .env để cấu hình và triển khai một ứng dụng Spring Boot trên Docker.

2.1. Cấu Trúc Dự Án Mẫu

Dự án Spring Boot mẫu của chúng ta có cấu trúc như sau:

  • application.yaml: File cấu hình chính của ứng dụng, sử dụng các biến môi trường để cấu hình kết nối cơ sở dữ liệu.
  • .env: File chứa các biến môi trường chung cho ứng dụng.
  • .env.dev: File chứa các biến môi trường cho môi trường phát triển (development).
  • .env.prod: File chứa các biến môi trường cho môi trường production.
  • Dockerfile: File định nghĩa cách build image Docker cho ứng dụng.
  • docker-compose.yaml: File định nghĩa cách triển khai ứng dụng trên Docker với Docker Compose.

2.2. Cấu Hình Biến Môi Trường Trong application.yaml

Trong file application.yaml, bạn có thể sử dụng cú pháp ${BIEN_MOI_TRUONG} để tham chiếu đến các biến môi trường. Ví dụ:

yaml Copy
server:
  port: ${PORT:8080}

spring:
  datasource:
    url: ${DB_URL}
    username: ${DB_USER}
    password: ${DB_PASS}

2.3. Quản Lý Biến Môi Trường Trong File .env

Các biến môi trường chung cho ứng dụng được định nghĩa trong file .env như sau:

Copy
NAME=ENV_DEMO
PORT=8011

Ngoài ra, bạn cũng cần định nghĩa các biến môi trường cho từng môi trường cụ thể trong các file tương ứng:

.env.dev

Copy
DB_URL=jdbc:postgresql://10.147.19.178:5432/postgres
DB_USER=postgres
DB_PASS=123456789

.env.prod

Copy
DB_URL=jdbc:postgresql://10.147.19.40:5432/env_dev
DB_USER=meomeo
DB_PASS=meocoder@1001

2.4. Cấu Hình Dockerfiledocker-compose.yaml

File Dockerfile định nghĩa cách build image Docker cho ứng dụng Spring Boot như sau:

Copy
FROM eclipse-temurin:17-jre-alpine
LABEL author="Nguyen"
COPY ./target/*.jar ./app.jar
ENV TZ=Asia/Ho_Chi_Minh
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java", "-jar", "./app.jar"]

File docker-compose.yaml như sau:

Copy
version: '3.7'
services:
  app:
    container_name: env_demo
    build: .
    volumes:
      - /home/web/log:/log
    ports:
      - ${PORT}:${PORT}
    env_file:
      - .env
      - .env.dev

2.5. Xây Dựng Và Chạy Ứng Dụng Với Docker Compose

Sau khi cấu hình xong, bạn có thể xây dựng file jar của ứng dụng tương ứng bằng lệnh mvn clean install, sau đó chạy lệnh docker-compose up -d để build image Docker và khởi chạy container.

2.6. Kiểm Tra Kết Quả

Khi container khởi chạy, bạn có thể kiểm tra log để xem ứng dụng đang chạy với cấu hình nào bằng lệnh docker logs <container_name>. Nếu ứng dụng được triển khai với môi trường phát triển (dev), log sẽ hiển thị rằng ứng dụng đang chạy trên cổng 8011:

Việc sử dụng file .env giúp chúng ta dễ dàng quản lý và thay đổi cấu hình cho các môi trường khác nhau mà không làm ảnh hưởng đến mã nguồn. Để thực hành chi tiết hơn, bạn có thể tham khảo repo mẫu tại đây. Trong repo này, tôi đã cung cấp một ví dụ đầy đủ về cách sử dụng file .env để cấu hình và triển khai một ứng dụng Spring Boot trên Docker. Hãy tự mình thử nghiệm và trải nghiệm quy trình làm việc với file .env trong môi trường thực tế.

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