Tôi đang cố gắng thực hiện đường ống CI / CD cho dự án của mình bằng Docker, Kubernetes và Jenkins. Ứng dụng của tôi là ứng dụng nhiều người thuê trong đó ứng dụng cơ sở dữ liệu biến mọi thứ khác nhau đối với người thuê khác nhau.
Chiến lược ứng dụng
Khi tôi đang xây dựng hình ảnh docker Tôi đang sử dụng Dockerfile. Và tôi giữ Dockerfile của mình bên trong kho mã SVN của mình. Đối với mỗi người thuê, kho lưu trữ mã là như nhau. Khi tôi đang xây dựng một hình ảnh, tại thời điểm đó tôi cần xây dựng các hình ảnh khác nhau cho những người thuê nhà khác nhau.
Thực hiện Dockerfile
Trong tệp docker của tôi, tôi đang thêm điểm vào như sau,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Nếu tôi cần xây dựng hình ảnh Docker cho người thuê khác, cần thêm
-Dspring.profiles.active=tenant2config
Vì vậy, điểm vào trong Dockerfile là động.
Sự nhầm lẫn của tôi
- Để quản lý lệnh nhập điểm bên trong Dockerfile có thể bằng động?
- Hoặc tôi có cần thêm Dockerfile cho người thuê khác không? Và cần chạy lệnh xây dựng docker riêng cho người thuê riêng?
Làm thế nào tôi có thể tìm thấy một cách tiêu chuẩn tốt để thực hiện vấn đề này?
ENTRYPOINT
tức là... -Dspring.profiles.active=${TENANT}
sau đó đặt môi trường chính xác trong quá trình triển khai của bạn.