Sớm hay muộn, tất cả chúng ta đều phải xử lý các biến môi trường trong tệp soạn của mình. Chúng có thể trở thành một nỗi đau, đặc biệt nếu chúng ta không biết cách sử dụng chúng đúng cách. Dưới đây là mọi thứ tôi biết về các biến môi trường và cách sử dụng các biến này dễ dàng và trên hết là an toàn.
Chúng ta sử dụng các biến môi trường như thế nào?
Docker Compose cho phép chúng ta chuyển các biến môi trường vào thông qua dòng lệnh hoặc xác định chúng trong trình bao của chúng ta. Tuy nhiên, tốt nhất là giữ các giá trị này bên trong tệp soạn thực tế và bên ngoài dòng lệnh. “Tại sao?” bạn có thể yêu cầu.
Bởi vì theo cách này, chúng ta không phải nhớ tất cả các biến môi trường mà chúng ta sử dụng mỗi khi triển khai vùng chứa của mình. Bằng cách lưu trữ chúng trong tệp soạn, chúng ta duy trì tính nhất quán trong quá trình xây dựng của mình.
Có nhiều hướng khác nhau để làm điều đó.
Sử dụng lựa chọn môi trường.
Sử dụng tùy chọn môi trường soạn cho phép chúng ta khai báo các biến môi trường và giá trị của chúng bên trong tệp soạn của chúng ta, như thế này.
Đây là cách dễ nhất, nhanh nhất để lưu trữ các biến môi trường bên trong soạn tệp. Tuy nhiên, nó có một nhược điểm lớn là liên quan đến bảo mật. Bạn có đoán được nó là gì không?
Đúng rồi.
Việc lưu trữ các giá trị của các biến môi trường của bạn trong tệp Soạn sẽ – 95% thời gian – chuyển thẳng đến kiểm soát nguồn và đó là một rủi ro bảo mật rất lớn. May mắn thay, chúng ta có một giải pháp thay thế: sử dụng tệp bên ngoài để lưu trữ các biến môi trường của chúng ta.
Sử dụng tập tin .env
Ưu điểm chính của việc sử dụng tệp bên ngoài cho các biến môi trường của bạn là bạn có thể giữ tệp đã nói ngoài quyền kiểm soát nguồn của mình. Rốt cuộc, không ai thích có mật khẩu, khóa API hoặc thông tin siêu bí mật khác của họ trên internet.
Tệp .env là tệp văn bản thuần túy, chúng ta sử dụng để cấu hình. Hãy nhớ rằng, vì tên tệp bắt đầu bằng dấu ‘ . ’ Nên chúng vẫn bị ẩn đối với hệ thống.
Chú ý: Để liệt kê các tệp ẩn, bạn có thể sử dụng lệnh ls -a trên Linux hoặc lệnh dir / a: h trên Windows.
Bạn phải tạo tệp .env tại thư mục gốc của dự án, đây cũng là nơi chứa tệp docker-compost.yml của bạn.
Chúng ta có thể khai báo và gán các biến trong tệp .env của mình. Đặt tên cho các biến theo cách bạn muốn vì chúng ta sẽ chỉ truy cập các giá trị của chúng.
Đây là tệp .env của tôi:
Bạn cũng có thể tạo và điền tệp .env của mình từ dòng lệnh bằng cách sử dụng lệnh mèo Linux:
Chú ý: Hãy nhớ không để lại bất kỳ khoảng trống nào giữa dấu = và giá trị được gán cho biến của bạn, vì chúng sẽ được thêm vào chuỗi.
Bây giờ chúng ta đã lưu trữ các biến trong tệp .env, hãy sử dụng chúng trong tệp Soạn của chúng ta. Bây giờ là lúc sử dụng phép nội suy chuỗi (đó là một cái tên ưa thích khi sử dụng ký hiệu $ {string}) để gán giá trị của các biến .env của chúng ta cho các biến môi trường trong tệp Soạn.
Như bạn có thể thấy, chúng ta duy trì tùy chọn môi trường và chỉ cần gán các giá trị bên ngoài của chúng ta cho các biến môi trường Soạn.
Để kiểm tra xem mọi thứ có hoạt động bình thường hay không, hãy chạy lệnh sau: docker-compile up.
Chú ý: Bạn có thể kiểm tra giá trị nào được gán cho các biến môi trường bằng cách chạy lệnh sau (trong một thiết bị đầu cuối khác): docker-compile config.
Mức độ ưu tiên biến môi trường
Một điều rất quan trọng mà chúng ta phải ghi nhớ là mức độ ưu tiên được Compose sử dụng để lựa chọn giá trị môi trường của nó. Điều đó có nghĩa là gì?
Nếu chúng ta khai báo cùng một biến môi trường trong một số tệp (ví dụ: trong tệp Soạn và trong tệp .env bên ngoài) với các giá trị khác nhau, thì Soạn sẽ sử dụng giá trị của biến được khai báo trong tệp Soạn. Tại sao? Bởi vì, tùy thuộc vào nơi mà biến được khai báo, Soạn sẽ cấp cho biến đó mức độ ưu tiên cao hơn hoặc thấp hơn. Đây là thứ tự, xếp hạng từ mức độ ưu tiên cao nhất đến mức độ ưu tiên thấp nhất:
- Soạn tệp
- Biến môi trường Shell
- Tệp môi trường
- Dockerfile
- Biến không được xác định
Nếu vì lý do nào đó, tính năng Soạn đang chọn và chỉ định một giá trị mà bạn không mong đợi, thì đây có thể là nguyên nhân. Đảm bảo rằng tất cả các biến của bạn được khai báo chính xác ở nơi bạn muốn.
Sử dụng tùy chọn env file
Trong phần trước, chúng ta đã nói về các tệp .env thuần túy, nhưng chúng ta chưa bao giờ sử dụng các tệp .env có tên. Nếu chúng ta muốn tệp .env của mình có tên, như secret-things.enf, thì Compose có một tùy chọn nhỏ tiện lợi có tên là env_file.
Tùy chọn này cho phép chúng ta thông báo cho soạn thảo tệp .env mà nó phải tìm kiếm, trái ngược với hành vi mặc định của nó, đó là tìm kiếm tệp .env không tên. Đây là cách chúng ta sử dụng tùy chọn env_file.
Như bạn có thể thấy, chúng ta đã thêm tùy chọn env_file, tùy chọn này trỏ đến một tệp có tên tệp secret -uff.env. Tất cả những gì còn lại là đổi tên tệp .env trước đó của chúng ta thành secret -uff.env.
Bạn có thể nhận thấy tùy chọn môi trường không còn xuất hiện trong tệp soạn thư của chúng ta. Điều này là do việc sử dụng tùy chọn env_file làm nảy sinh một vấn đề – một vấn đề khiến tôi khá đau đầu!
Để gán các giá trị được khai báo trong tệp .env có tên bên ngoài cho các biến soạn yêu cầu tệp đã nói phải được xác định trong dịch vụ soạn chính. Điều này liên quan đến thứ tự mà Soạn tuân theo khi thực hiện các hoạt động. Tuy nhiên, chúng ta không có dịch vụ chính, vì chúng ta chỉ sử dụng một dịch vụ db. Do đó, nếu chúng ta cố gắng triển khai tệp Soạn của mình, nó sẽ phàn nàn rằng các biến của chúng ta không được xác định và thay thế chúng bằng các chuỗi trống.
Bạn không cần phải nghe lời tôi, hãy tiếp tục và thử nó! Chạy docker-soạn lên và xem điều gì sẽ xảy ra.
Vì vậy, làm thế nào để chúng ta giải quyết vấn đề này? Đây là những gì tôi đã tìm ra:
Nếu chúng ta xóa tùy chọn môi trường khỏi tệp soạn, khi triển khai, soạn sẽ tìm kiếm tệp secret -uff.env được chỉ định, điều mà tùy chọn này không thực hiện khi có tùy chọn môi trường. Vấn đề đã được giải quyết!
Tuy nhiên, hãy nhớ rằng vì chúng ta không còn tùy chọn môi trường nữa, chúng ta phải khai báo các biến môi trường trực tiếp trong tệp secret -uff.env, như sau:
Một lần nữa, để kiểm tra xem mọi thứ có hoạt động bình thường hay không, hãy chạy: docker-compile up.
Đây các cách khác nhau để xử lý an toàn với các biến môi trường trong soạn tệp. Cảm ơn đã theo dõi.
Author: DuongVT19