Chúng tôi có ứng dụng AngularJS. Chúng tôi đã viết một dockerfile cho nó để nó có thể tái sử dụng trên mọi hệ thống. Dockerfile không phải là một thực hành tốt nhất và nó có thể là một số xây dựng lạ (xây dựng và lưu trữ trong cùng một tập tin) cho một số nhưng nó chỉ được tạo ra để chạy ứng dụng angularjs của chúng tôi tại địa phương trên mỗi PC của mỗi nhà phát triển.Hình ảnh docker có thể tái sử dụng cho AngularJS
Dockerfile:
FROM nginx:1.10
... Steps to install nodejs-legacy + npm
RUN npm install -g gulp
RUN npm install
RUN gulp build
.. steps to move dist folder
Chúng tôi xây dựng hình ảnh của chúng tôi với docker build -t myapp:latest .
Mỗi nhà phát triển có thể chạy ứng dụng của chúng tôi với docker run -d -p 80:80 myapp:latest
Nhưng bây giờ chúng tôi đang phát triển backends khác. Vì vậy, chúng tôi có một hậu phương trong DEV, một hậu phương trong UAT, ... Vì vậy, có URL khác nhau mà chúng ta cần phải sử dụng trong /config/xx.json
{
...
"service_base": "https://backend.test.xxx/",
...
}
Chúng tôi không muốn thay đổi URL mà mọi thời gian, xây dựng lại hình ảnh và bắt đầu nó. Chúng tôi cũng không muốn khai báo một số URL (dev, uat, prod, ..) có thể được sử dụng ở đó. Chúng tôi muốn thực hiện quy trình gulp build
của chúng tôi với biến môi trường thay vì URL được mã hóa cứng.
Vì vậy, chúng ta có thể bắt đầu container của chúng tôi như thế này:
docker run -d -p 80:80 --env URL=https://mybackendurl.com app:latest
Có ai có kinh nghiệm với loại này của vấn đề? Vì vậy, chúng tôi sẽ cần một biến env trong json của chúng tôi và xây dựng nó và thêm URL sau này nếu có thể.
Sau đó, tôi có lẽ cũng cần phải thực hiện việc xây dựng gulp trong đó .sh + tất cả các bước sau khi nó – lvthillo
Tôi không nghĩ đó là ý tưởng hay. entrypoint.sh sẽ thực thi trong lệnh docker run và không phải docker build. Bạn có thể cần một giải pháp khác nếu bạn muốn chạy gulp như một phần của docker build. – atv
Việc sử dụng lệnh docker run trong trường hợp này là tốt. Nếu không, tôi sẽ không thể cung cấp một ENV VAR cho container của tôi (và để thực hiện một gulp xây dựng trên nó) – lvthillo