Nếu bạn đang sử dụng 'docker-compose' làm phương pháp xoay vòng (các) vùng chứa của bạn, thực sự có một cách hữu ích để chuyển một biến môi trường được xác định trên máy chủ của bạn sang vùng chứa Docker.
Trong file docker-compose.yml
của bạn, hãy nói rằng bạn đang quay lên một container HAPI-js cơ bản và mã trông giống như:
hapi_server:
container_name: hapi_server
image: node_image
expose:
- "3000"
Hãy nói rằng các máy chủ địa phương mà dự án Docker của bạn nằm trên có một biến môi trường có tên 'NODE_DB_CONNECT' mà bạn muốn chuyển tới vùng chứa hapi-js của mình và bạn muốn tên mới của nó là 'HAPI_DB_CONNECT'. Sau đó, trong tập tin docker-compose.yml
, bạn sẽ vượt qua biến môi trường địa phương để các thùng chứa và đổi tên nó như vậy:
hapi_server:
container_name: hapi_server
image: node_image
environment:
- HAPI_DB_CONNECT=${NODE_DB_CONNECT}
expose:
- "3000"
Tôi hy vọng điều này sẽ giúp bạn tránh được hard-coding một cơ sở dữ liệu kết nối chuỗi trong bất kỳ tập tin trong thùng chứa của bạn!
Có cách nào dễ dàng hơn để làm điều này? Thật là khó chịu khi phải tạo lại container với các biến khác nhau mỗi lần. Có thể lưu trữ nó trong một tập tin? –
Tôi lưu trữ các lệnh chạy docker trong các kịch bản shell, (./start_staging.sh etc ..) sau đó thực hiện chúng từ xa bằng Ansible. – errata
Tôi gặp sự cố khi tải phiên bản thứ hai để hoạt động; Tôi đặt PASSWORD = foo trong môi trường, sau đó truyền --env PASSWORD, và chỉ từ "PASSWORD" xuất hiện trong tệp config.json của vùng chứa; mọi biến môi trường khác đều có khóa và giá trị. Tôi đang sử dụng Docker 1.12.1. –