Есть вариант с добавлением сертификатов в образ при сборке, а сертификаты хранить в ci переменных в gitlab.
Но их нельзя замаскировать, так как это не просто строка. Тогда придется делать два сертификата, а переменные дублировать как
protected.
Но так тоже не гибко получается, запихивать сертификаты в образ. Если только они не под wildcard.
(намеренно упрощенные конфиги для наглядности)
Dockerfile:
FROM nginx AS web
COPY ./nginx/.cert /etc/ssl/
.gitlab-ci.yml:
build:
stage: build
script:
- echo $SSL_KEY >> nginx/.cert/ssl.key # retrive content from var and create file
- echo $SSL_CERT >> nginx/.cert/ssl.crt
- docker build -t $IMAGE .
- rm -rf nginx/.cert/* # remove local certs
или монтировать сертификаты как
volumes, но обновлять их потом будет лишняя ручная работа
docker-compose.yml:
version: "3.4"
services:
app:
image: nginx
volumes:
- "nginx/.cert:/etc/ssl/"
Какой вариант лучше или есть ли еще? Есть идея в конечном счете использовать
traefik, но пока такой вариант не рассматривается.