У меня есть приложение Angular 6, которое требуется для развертывания в кластере Kubernetes в качестве контейнера Docker (базовое изображение Nginx).
Вопрос : Как мне приспособиться с помощьютот же образ Docker, который был создан один раз, но чтобы иметь возможность работать в dev & prod и указывать на разные API_URL?
Мои Файлы среды :
.ts
export const environment = {
production: false,
API_URL: 'https://dev-server.domain.com'
};
environment.prod.ts
export const environment = {
production: true,
API_URL: 'https://prod-server.domain.com'
};
My nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
}
}
My Dockerfile :
# base image
FROM nginx:alpine
# private and public mapping
EXPOSE 80
COPY nginx.conf /etc/nginx/nginx.conf
WORKDIR /usr/share/nginx/html
COPY dist/my_project .
На этом этапе я строю свой проект на своей локальной машине и оптимизирую его для производства:
ng build --prod --build-optimizer
Итак, вв этот момент моя файловая структура выглядит следующим образом:
root
|--Dockerfile
|--nginx.conf
|--angular.json
|--dist
|--my_project
|--styles.3ed0e5393a1386f6fc48.css
|--runtime.a66f828dca56eeb90e02.js
|--polyfills.2f5aa8fb3d2aea854d83.js
|--main.2b3e9b16d82428586ae5.js
|--index.html
|--favicon.ico
|--3rdpartylicenses.txt
|--assets
Теперь я готов создать образ докера:
docker build -t my_application_image .
Затем я помещаю изображение в реестр Docker, а затем используется в Kubernetes.
Теперь, когда вы знаете мои настройки, можете ли вы предложить, как я могу изменить это так, чтобы можно было использовать различные файлы средыd для dev & prod?