Vitalii
расскажи как.
Evgeny
Если учишся - сначала попробуй
Evgeny
Может сам все решишь
Vitalii
Если учишся - сначала попробуй
ок, я то решу. Но мошно узнать исход заранее? Когда делается git clone в Dockerfile какие права имеют файлы?
Lex
Это RUN на нее влияет USER
Vitalii
Это RUN на нее влияет USER
это отличное замечание. Спасибо! А юзер который указан в USER докерфайла будет потом в системе внутри контейнера?
Lex
USER так же влияет на CMD и ENTRYPOINT
Vitalii
USER так же влияет на CMD и ENTRYPOINT
это я уже знаю, но будет ли он потом создан в контейнере? я уже пробую конечно собрать и посмотреть самому, но все же
Lex
Пользователь который указан в USER должен присутствовать в системе
Vitalii
вот круто рассказывают как правильно укаповывать код в контейнеры
Vitalii
http://blog.cloud66.com/how-to-get-code-into-a-docker-container/
Sergei
> According to Docker's best practices guide, COPY is recommended for most cases.
Павел
Коллеги, с наступающими!
Павел
Тупой вопрос, с которым не первый раз сталкиваюсь.
Sergei
@voskobovich как вариант можно в образ складывать /docker-entrypoint.sh и в нем chown -r www-data:www-data /app размер образа не изменится, profit!
Павел
Что делать с теми средами, которые ставят зависимости в тот же каталог, где исходники? Типа ./node_modules? Невозможно же разрабатывать в режиме -v pwd:/app!
Павел
Приходится городить отдельный вызов пакетного менеджера, который бы мне на хост закачал эти несчастные зависимости, чтобы при монтаже каталога внутрь контейнера их там runtime нашел. Для IDE, конечно, это прикольно (иметь исходники библиотек под рукой), но уж больно некрасиво.
Vitalii
@voskobovich как вариант можно в образ складывать /docker-entrypoint.sh и в нем chown -r www-data:www-data /app размер образа не изменится, profit!
я читал про этот метод... но я не понял когда запускается этот entrypoint. И почему не измениться размер образа если изменнеия в файлах есть все равно, а каждое изменение - это новый слой.
Evgeny
Учите матчасть, блин. Нодмодули могут быть выше
Vitalii
и вообще, скажите, внутри образа хранить исходники кода под рутом - чем плохо? может я с ветряной мельницей боролся?
Павел
Учите матчасть, блин. Нодмодули могут быть выше
Ну т.е., общее решение — перестать ставить зависимости под исходники и начать жить, правильно понимаю?
Vitalii
веб сервер от www-data, права на чтение файлов у него есть, на запись права выдам куда надо... минусов не вижу.
Vitalii
в плане безопасности... тоже вопросов нет, хм... я что-то не замечаю?
Vitalii
то есть это скрипт, который стартует каждый раз при запуске контейнера. верно? если да, то круто
Vitalii
ок, но ведь если в контейнере чет после сборки изменить то его размер не измениться пока изменения не закомиттить. Так?
Sergei
хз, я не комичу контейнеры и не задавался вопросом)
Sergei
но есть подозрения что эти изменения на ФС не отражаются
Vitalii
ну каждый коммит - новый слой :) так что 99% что да, ну тестом можно проверить. А вообще с энтрипоинтом крутая идея. А скажи плиз, когда именно он запускается? в какой момент
Evgeny
Это плохая идея, в целом. Время отработки чоуна какие?
Sergei
https://docs.docker.com/engine/reference/builder/#/understand-how-cmd-and-entrypoint-interact
Sergei
Это плохая идея, в целом. Время отработки чоуна какие?
ну вот сам так делаю, вроде не беспокоит, временем можно пренебречь. а если архив создавать, то да, быстрее. Время сборка только немного увеличится, что тоже не критично
Sergei
а еще проверил, контейнер не растет в размерах, только /var/lib/docker/aufs/diff/ на несколько байт увеличился
Sergei
он же diff)
Vitalii
понял, попробую
Lex
из вариантов — пакуй из своего кода tarball выстявляя нужные привилегии и добавляй через ADD
Lex
что-бы не chown’ить и chmod’ить
Vitalii
исходники под рутом ничем не плохо
Только тем, что композер ругается на безопасность
Vitalii
Ну, пока так может работать
Viktor
А подскажите, плиз, как провернуть следущее: есть сервер1 с несколькими docker-контейнерами, сервер2 с mysql; надо дать возможность коду из контейнеров ходить в mysql. Как такое провернуть вообще можно?
Roman
возможно network_mode: "host" поможет
Viktor
а как это в compose-файле указать? (маны чрезмерно скудные на этот счет…)
Viktor
нет - он один там на той машине
Dmitry
нет - он один там на той машине
Тогда приложения в контейнерах уже должны иметь возможность связаться с тем хостом, где стоит база
Roman
а прям так и указывать
Roman
https://docs.docker.com/compose/compose-file/#/networkmode
Dmitry
Зачем в этом случае network в host режиме не понимаю. Разве что в докер ещё нет человеческой поддержки ipv6 по дефолту(пару месяцев не следил за ним) и база у вас на ipv6-only хосте. А так это не обязательно
Roman
Тогда приложения в контейнерах уже должны иметь возможность связаться с тем хостом, где стоит база
есть подозрение что вот это не верно. хотя может просто я что-то делал не так. Опишите плз как какой нибудь пхп завернуть на базу на хостмашине
Dmitry
есть подозрение что вот это не верно. хотя может просто я что-то делал не так. Опишите плз как какой нибудь пхп завернуть на базу на хостмашине
Ну если база именно на хост -машине, без контейнера, то network в host режиме это действительно выход. А если база на другом сервере то к ней можно просто обратиться по fqdn
Vitalii
Ребята, не проектируйте инфраструктуру которая рассчитана на "свой веб сервер под каждый проект". Вы не сможете поднять два сервера на одном хосте :( именно на это напоролся сейчас я...
Vitalii
Vitalii
а так все красивенько было скомпоновано в docker-compose.
Vitalii
Фак, бд и мемкеши кажется можно завернуть в локальные сети между композером, и таким обзразом поднять под каждый проект свою БД. Верно?
Vitalii
А вот с веб сервером на 80м порту такое точно не прокатит
Vitalii
nginx на 80м порту всегда один будет
Vitalii
нельзя сделать их несколько
🏳️ Phil
А зачем? Ну он один будет да
🏳️ Phil
В чем проблема?
CC-BY-SA-4.0/Docker-ce30.0
Один балансер, за ним апстримы бакендов.
Vitalii
в том что у меня есть проект, я для него создал docker-compose.yml в котором nginx, php-fpm, postgresql, memcached
Vitalii
и все это было рассчитано на то, что под каждый проект свой набор перечисленных выше компонентов
Vitalii
а сегодгня с треши шел и думал... а как же я запущу два проетка с атким подходом на одной хост машине...
Vitalii
и понял что я круто ошибся :(
🏳️ Phil
в том что у меня есть проект, я для него создал docker-compose.yml в котором nginx, php-fpm, postgresql, memcached
И? Решение странное с nginx, но иногда даже имеет смысл. В чём проблема-то,
Andrey
в админе локалхоста :)
Vitalii
не, это какие-то не нормальные решения... точнее в моем случае они не оптимальны.
Vitalii
все равно на 80м порту будет кто-то один сидеть, а все остальные апачи и нгинксы должны занимать любые другие порты
Vitalii
буду думать как сделать гибко
🏳️ Phil
не, это какие-то не нормальные решения... точнее в моем случае они не оптимальны.
Да с чего они ненормальные? Ну ок, вынеси из этой солянки nginx в один. В чем паника?
Pavel
И в итоге придумаешь ровно так как тебе тут предлагают :)
Vitalii
да нет паники, я просто хотел ребятам которые сейчас начали проектировку своей мего крутой инфтраструктуры показать где я ошибся... чтобы они не повторяли