Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove beget/sprutio-nginx, add official nginx with custom config and certs #38

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

f-andrey
Copy link

Так как beget/sprutio-nginx не содержит никаких изменений, но усложняет изменение конфига, при изменении конфига, сейчас надо перегенерировать контейнер, что не удобно.

Предлагаю вообще отказаться от него и вынести все конфиги на отдельный волум. Так можно легко изменять любые опции не изменяя контейнер.

TODO:

  • так как сейчас используется устаревший docker-compose не позволяющий делать явные зависимости, то после первого создания проекта, контейнер nginx надо перезапустить (так как он стартует ещё без сертификатов и крашится)
  • для того что бы данные изменения стали работоспособны надо обновить beget/sprutio-app (так как он содержит скрипт генерации ключей, который изменён)

@@ -25,14 +25,14 @@ rpc:
- "./rpc.env"

nginx:
image: beget/sprutio-nginx
image: nginx:1.9
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

предлагаю использовать nginx:alpine, он меньше в размерах

@ghost
Copy link

ghost commented Aug 31, 2016

Предлагаю вообще отказаться от него и вынести все конфиги на отдельный волум. Так можно легко изменять любые опции не изменяя контейнер.

в целом идея разумная, LGTM

@ghost ghost self-assigned this Aug 31, 2016
@ghost
Copy link

ghost commented Aug 31, 2016

docker build -t beget/sprutio-nginx -f Dockerfile.nginx ./"

также нужно убрать данную строчку (и строчку с push) из .travis.yml

@f-andrey
Copy link
Author

f-andrey commented Aug 31, 2016

Да, про тесты то я забыл, но он тут на автомате всё одно похоже успешно не пройдёт, так как в нём есть процедура авторизации.

@ghost
Copy link

ghost commented Aug 31, 2016

Да, про тесты то я забыл, но он тут на автомате всё одно похоже успешно не пройдёт, так как в нём есть процедура авторизации.

этот момент я поправлю после принятия MR чтобы не ребейзить
да и это не совсем тесты, так как работают только для master ветки

что думаете по поводу использования nginx:alpine вместо nginx:latest?

@f-andrey
Copy link
Author

Пока не настолько разбираюсь в теме, что бы сделать осознанный выбор, но пожалуй версию посвежее было бы не плохо. А так как остальные части, всё одно тянут базовые контейнеры не :alpine то думаю, использование :alpine тут, врядли даст какие то преимущества

@ghost
Copy link

ghost commented Aug 31, 2016

Пока не настолько разбираюсь в теме, что бы сделать осознанный выбор, но пожалуй версию посвежее было бы не плохо. А так как остальные части, всё одно тянут базовые контейнеры не :alpine то думаю, использование :alpine тут, врядли даст какие то преимущества

ну значительной разницы конечно не будет, но чем меньше образ тем лучше)
из базовых образов только python:3.4, остальное можно заменить на :alpine версии

@f-andrey
Copy link
Author

Ну в общем то я наверное скорее за :alpine

@ghost
Copy link

ghost commented Aug 31, 2016

ну тогда осталось поменять тег в docker-compose, протестировать и слить коммиты


if [ -s sprutio.key -a -s sprutio.crt ]; then
exit 0
fi

openssl req -nodes -newkey rsa:4096 -keyout sprutio.key -out sprutio.csr -subj "/C=RU/O=Beget/CN=sprut.io"
openssl x509 -req -days 365 -in sprutio.csr -signkey sprutio.key -out sprutio.crt

chmod 600 ../certs
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь наверное должно быть 700 (иначе получается что права rw на директорию)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, что то по запарке не то натворил, пока пытался всё же сделать, что бы нгинкс стартовал с первого раза, пока понял, что он скорее всего просто запускается раньше пока сертификаты просто готовы.

@ghost
Copy link

ghost commented Sep 1, 2016

так как сейчас используется устаревший docker-compose не позволяющий делать явные зависимости, то после первого создания проекта, контейнер nginx надо перезапустить (так как он стартует ещё без сертификатов и крашится)

на самом деле можно поступить по другому
sprutio-nginx оставить, но вместо добавления конфига в контейнер - генерировать там ssl сертификат при старте (если файлов нет)
конфиг также монтировать снаружи

и второй момент - в скрипте ./run.sh также нужно скачивать конфиг nginx из репозитория

@ghost
Copy link

ghost commented Sep 1, 2016

кстати генерацию сертификатов можно вообще вызывать внутри ./dev.sh и ./run.sh

@ghost
Copy link

ghost commented Sep 1, 2016

также я исправил билды для travis в #40
нужно сделать rebase относительно master
и лучше все коммиты из данного PR перетащить в другую ветку (не master), чтобы было удобнее стягивать обновления из master в этом репозитории в свой master

@f-andrey
Copy link
Author

f-andrey commented Sep 1, 2016

Не знаю, стоит ли из за такого мелкого функционала делать изменённый контейнер, мне понравился подход https://github.com/vmware/harbor/tree/master/Deploy они просто хранят все настройки проекта в отдельном конфиге, при инслалляции выполняют отдельный скрипт который готовит окружение, а потом уже запускают контейнеры в готовой среде.

Насчёт бранча, да пожалуй стоит, но текущее может стоит вмержить как есть, я вроде разрешил как то ручками, а дальше, да завести бранч, для изменений, если что то оптимизировать. Я просто не так много и часто работаю с публичными гитами, поэтому постоянно забываю о таких вещах.

@ghost
Copy link

ghost commented Sep 1, 2016

Не знаю, стоит ли из за такого мелкого функционала делать изменённый контейнер, мне понравился подход https://github.com/vmware/harbor/tree/master/Deploy они просто хранят все настройки проекта в отдельном конфиге, при инслалляции выполняют отдельный скрипт который готовит окружение, а потом уже запускают контейнеры в готовой среде.

да, можно и не делать
в этом случае нужно вынести вызов init-ssl.sh в скрипты запуска dev.sh(run.sh) и в скрипт run.sh добавить скачивание конфигов nginx перед запуском контейнера

Насчёт бранча, да пожалуй стоит, но текущее может стоит вмержить как есть,

нет, в таком виде уже сложно будет смержить, так как тут мешанина из коммитов
нужно сделать следующее

  • добавить текущий репозиторий как remote
    git remote add upstream https://github.com/LTD-Beget/sprutio
    git remote update
  • переименовать текущий мастер
    git branch -m master old-master
  • создать новый master из upstream
    git checkout -b master upstream/master
  • создать отдельную ветку
    git checkout -b nginx
  • перетащить коммиты в эту ветку
    git log --author=andrey@bsdnir.info --format=%H old-master | while read line; do git cherry-pick $line; done
  • запушить ветку nginx в свой репозиторий и создать новый PR со ссылкой на текущий (а текущий закроем)

ну и потом обновить свой master на гитхабе на консистентное состояние
git checkout master
git push -fu origin master

@f-andrey
Copy link
Author

f-andrey commented Sep 1, 2016

Спасибо за подсказку, буду теперь знать как оно вручную это всё выковыривать, вроде довёл до сливабельного состояния.

@ghost
Copy link

ghost commented Sep 1, 2016

так, отлично
осталось еще пара моментов

  • вынести init-ssl.sh из app в корень и добавить его вызов в скрипты dev.sh и run.sh (с необходимой адаптацией)
    это решит проблему с первым запуском nginx и отсутствием сертификатов
  • добавить в run.sh скачивание конфигов nginx по аналогии с docker-compose.yml

ну и убрать прокидывание ssl сертификатов "./nginx/certs:/app/nginx/certs:rw" в сервис app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant