Lex
да
Lex
там старый срач по поводу ADD и COPY но проблему не порешали до сих пор
Vitalii
у меня вообще задача - создать ряд контейнеров для продакшена, чтобы в них уже все настроено было, сделал их pull на продакшене и запустил и агонь!
Vitalii
может я не правильно это решаю?
Vitalii
может нет ничего страшного собирать конетйнеры на продакшене?
Evgeny
Задача правильная. Но собирать надо до прода
Lex
собирай при сборке
Lex
прогоняй на них тесты
Vitalii
вот
Vitalii
до прода
Vitalii
то есть на дев машине
Lex
с них и разворачивай на прод
Lex
в CI
Vitalii
ну, до CI мне еще далеко, хотя бы руками прочувствовать как это...
Vitalii
ну суть в том, что на дев машине или CI собирается контейнер, кладется в репо и с репы уже на проде разворчивется. так?
Evgeny
дев машина - это дев машина
Lex
+
Evgeny
на проде делаешь docker service update или docker pull && docker run
Vitalii
дев машина - это дев машина
ну собрать то и запушитьв репу я на ней ручками могу :)
Vitalii
ок, значит подход правильный
Evgeny
Это не очень хорошо
Vitalii
потому что CI пока что нет и я до его изучения пока не дошел :( гитлаб себе разверну и буду колупать
Vitalii
и тестов нет на проекте пока что... и когда будут хз :)
Vitalii
и мне вообще много чего учить :) пока ручками на любой машине кроме прода собирать буду
Vitalii
вот осталось с правами придумать че делать и я буду спать спокойно :)
Evgeny
чтот мне подказывает что нет
Evgeny
вот ты где и как хранишь файло?
Vitalii
какие?
Evgeny
ну у тебя наверняка пхп файлы создает
Vitalii
ну, допустим... приложение то работает, логи есть, юзеры чет загружают. Ты про это?
Evgeny
Я про юзер контент, да. Логи у тебя встанут проблемой чуть позже
Vitalii
ну все важное будет смаунчено на хост машину
Evgeny
Все работает на одной машине?
Vitalii
в контейнерах ничего важного не будет
Vitalii
пока что на одной, а что?
Evgeny
Не, тогда все гораздо проше
Vitalii
Не, тогда все гораздо проше
Женя, ты доку ищешь или просто сказал что все проще и дальше сам? :))
Evgeny
А, не, просто там нафиг не надо тогда все что я тут распинался
Evgeny
Всё куда проще и без мучений
Evgeny
Тогда можно и билд и прод совмещать
Vitalii
ну не важно где оно будет собираться, проблему с правами все равноне решает.
Evgeny
решение проблемы прав - явно их задавать
Vitalii
супер... какого юзера ставить файлам?))
Evgeny
любого явно созданного
Evgeny
сделать один id:gid на хосте и внтури - и вперед
Vitalii
в контейнере app. Верно?
Vitalii
вот прикольный тест сделали https://github.com/docker/docker/issues/6119#issuecomment-70606158
Vitalii
смена прав становиться очень дорогоим удовольствием :)
Evgeny
меняй снаружи перед билдом
Vitalii
так, снаружи это всмысле на хост машине ?
Evgeny
да
Vitalii
пфф... так на них сейчас и стоят права юезра docker который на хост машине
Vitalii
а после COPY в контейнер то на них рут
Vitalii
в том то и проблема :)
Vitalii
да, проблема явно остро обсуждается :)
Evgeny
Так, я сейчас явно проверил еще раз - все нормально рабоатет
Evgeny
Билдим с этим: FROM alpine ADD file.tgz /srv Видим это: / # ls -la /srv/ total 1448 drwxr-xr-x 2 root root 40 Dec 27 13:05 . drwxr-xr-x 18 root root 221 Dec 27 13:05 .. -rw------- 1 root root 1222777 Dec 27 12:59 messages -rw-r--r-- 1 982 972 255787 Aug 25 17:02 mongod.log
Vitalii
а нет, не все...
Evgeny
я не на каждой своей машине делаю рута с 982:972
Vitalii
я не на каждой своей машине делаю рута с 982:972
а ну попробуй такое же с COPY сделать и без массива
Vitalii
у меня вот что в контейнере после COPY
Vitalii
~/html $ ls -l total 56 -rw-r--r— 1 root root 1622 Dec 27 11:40 LICENSE.md -rw-r--r— 1 root root 1353 Dec 27 11:40 README.md
Vitalii
а вот что в хост машине -rw-r--r— 1 docker docker 1622 Dec 27 11:40 LICENSE.md -rw-r--r— 1 docker docker 1353 Dec 27 11:40 README.md
Evgeny
А зачем делать копи если можно прочитать Ман?
Vitalii
ну я выбирал между COPY и ADD и узнал что ADD просто чуток больше умеет и работает с архивами
Vitalii
у меня архива нет, так как я делаю git clone с репы делаю в папку и все. Архивов нету... мне надо просто сорцы закинуть в докер
Evgeny
Поэтому я и говорю про костыли
Evgeny
Потому что если ты посмотришь дампом что льется в демона - ты увидишь, что так идет оттриманный
Vitalii
а, то есть ты хочешь сказать, что если я лью сырые сорцы то их кидает в контейнер демон который работает под рутом. В итоге имеем файлы в контейнере под рутом. А если мы кидаем архив, то файлы не меняються...и попадют с такими правами как были запакованы
Vitalii
я уловил мысль?
Vitalii
оооок... понял. Знаний получил, за что спасибо! А что, если делать git clone в самом Dockerfile. Вариант?
Evgeny
Да, правда там немного другие проблемы лезут
Evgeny
Но я у себя из контейнера клонб