George
docker-compose build myapp Что не так тут?
Тем что это не продакшн решение - максимум для локальных тестов. Dixi
Konstantin
Оу, я понял)
Maksym
Какие?
Например vendor папка осталась в образе, но у меня ее нету
George
Вендор же пересобирается.
Maksym
Вендор же пересобирается.
Вендор к примеру. У меня даже контролеры различаются в докерконтейнере и на компу. что можно сделать?
Maksym
Konstantin
без Dockerfile - только гадать
Илья
такая проблема возникла, есть 4 контейнера объединенные в docker-compose, nginx, node.js приложение, api на php и база. запросы из ноды идут на nginx и в зависимости от урла отдается апишка либо же запросы идут в ноду. из ноды когда идут запросы на апи, все ок(php конектится к базе по указанному хосту some_db, это важный момент) когда приложение загрузилось и начинает посылать запросы из браузера к апишке, происходит трабл с тем что креды в базе уже не подходят(название хоста где она висит) так как в контейнере хост по названию сервиса some_db, а вне его уже localhost
Илья
и непонятно что с этим делать по сути нужно одновременно два хоста для базы работающих
Maxim
Скорее всего ваше приложение находится внутри образа, а не монтируется в него, Константин вам подсказывает что вам нужно показать здесь Dockerfile для того что бы вам могли помочь разобраться в этой сложной ситуации
Александр
docker-compose build myapp Что не так тут?
1. Сборка на проде. Она может хорошо выжирать ресурсы, а прод должен совсем другим заниматься 2. Нет образа, который будет идентичен и в разработке, и на тестовом сервере, и на проде
Konstantin
каждый о своём) Давайте не продолжать или читать все буквы
Konstantin
И вообще не билди из докер компоуза
Konstantin
это почему же?
Konstantin
1. Сборка на проде. Она может хорошо выжирать ресурсы, а прод должен совсем другим заниматься 2. Нет образа, который будет идентичен и в разработке, и на тестовом сервере, и на проде
Александр
И вообще, в такой реализации нельзя горизонтально масштабировать приложение по нескольким хостам
Александр
Для домашнего сайта котика пойдет)
Konstantin
сложна то как
Maxim
1. Сборка на проде. Она может хорошо выжирать ресурсы, а прод должен совсем другим заниматься 2. Нет образа, который будет идентичен и в разработке, и на тестовом сервере, и на проде
Зачем прод должен заниматься сборкой? Не проще ли развернуть приватный репозиторий и пушить в него образы которые будет стягивать прод?
Александр
Так можно, я почему-то подумал, что тут предлагали собирать при деплое. Но тогда не вижу смысла в docker-compose)
Maxim
Так можно, я почему-то подумал, что тут предлагали собирать при деплое. Но тогда не вижу смысла в docker-compose)
docker-compose полезная штуковина в хозяйстве, помогает в быту, упрощает контейнерную жизнь. Может быть проблема не в docker-compose, а в том как и для чего вы его используете?
Konstantin
docker-compose полезная штуковина в хозяйстве, помогает в быту, упрощает контейнерную жизнь. Может быть проблема не в docker-compose, а в том как и для чего вы его используете?
Да это просто комбайн для dockercli, и делать такие выводы как выше - смешно) ну как минимум видно кто на что горазд)
Maxim
Да это просто комбайн для dockercli, и делать такие выводы как выше - смешно) ну как минимум видно кто на что горазд)
Выводы действительно сомнительные, предполагаю что связано это с относительно недавним знакомством с docker
Аня
Всем привет. Только начинаю знакомится с докером. Есть рекомендации как настроить среду для разработки php?
Maxim
Всем привет. Только начинаю знакомится с докером. Есть рекомендации как настроить среду для разработки php?
У вас уже есть приложение и вам необходимо окружение для разработчика? Типа с xdebug и xhgui?
Александр
docker-compose полезная штуковина в хозяйстве, помогает в быту, упрощает контейнерную жизнь. Может быть проблема не в docker-compose, а в том как и для чего вы его используете?
Полностью согласен) Помогает в быту, это да. Но сборку через него не вижу смысла делать. строка в ci docker build... ничуть не труднее для понимания
George
Пока docker-compose не перепишут на гоу... Забавно, что теперь его единым бинарем распространяют. И это правильно
Maxim
Полностью согласен) Помогает в быту, это да. Но сборку через него не вижу смысла делать. строка в ci docker build... ничуть не труднее для понимания
docker-compose build использует параметры директивы build такие как context, dockerfile, args и др. указанные в docker-compose.yml и ничем не отличается от обычного docker build, в некоторых случаях эта способность незаменима и это хорошо что она есть в списке возможностей docker-compose
Konstantin
Полностью согласен) Помогает в быту, это да. Но сборку через него не вижу смысла делать. строка в ci docker build... ничуть не труднее для понимания
Суть в том, что это одно и тоже, разный формат - флагами cli или ключами в yaml. А рассуждения про прод/дев - детсад
Maxim
Суть в том, что это одно и тоже, разный формат - флагами cli или ключами в yaml. А рассуждения про прод/дев - детсад
Кстати, Константин, подскажи пожалуйста, как лучше организовать разделение prod/dev в одном docker-compose.yml файле? Есть 1 хост и на нем максимум docker-compose. Может знаешь что то типа best practice ?
Александр
Спасибо, кеп! А то я не знал) Я видел cd, в котором деплой выглядел так: cd /path/to/project git pull docker-compose build docker-compose up -d И подумал, что тут про то же самое. @nodekra Идите сами в свой дет.сад, прочитайте историю сообщений)
Александр
Я и не просил помощи)
Konstantin
Да и бинарником он доступен 3+ лет, дальше не помню
George
Но это дополнительный уровень абстракции, который с одной стороны может усложнить поддержку ci/cd и "протечь" в неудобном месте
Maxim
Но это дополнительный уровень абстракции, который с одной стороны может усложнить поддержку ci/cd и "протечь" в неудобном месте
если приведете примеры как это может усложнить ci/cd и что имеется в виду под "протечь" буду вам признателен, и не только я наверное
George
Я уж не говорю про то - нахера тащить компоуз в образы для сборки, если можно без него
George
Извините за мат 😂😂😂
Konstantin
Я уж не говорю про то - нахера тащить компоуз в образы для сборки, если можно без него
Изначально ты писал, что не нужно билдить композом, отсюда и сырбор
Konstantin
что то изменяет права на смонтированные директории, скорее всего вы используете одни и теже директории в разных сервисах и монтируете эти директории в запускаемые контейнеры, сервисы работают от разных пользователей и в какой то момент происходит вот такой нежданьчик с правами на запись в файл. Начните с проверки прав на файлы после старта сервисов, а затем после возникновения ошибки, и наверняка они будут отличаться
оказалось действительно так. Владельца кто-то/что-то сбрасывает на root, т.е. вместо id приложения владельцем становится id 0. Осталось понять, почему так происходит. Наверное, нужно аудит настраивать. Вот пример от graylog. До рестарта, когда идут ошибки access denied: [root@ib1 prod]# docker exec -it graylog bash root@942b241883da:/usr/share/graylog# ls -la /usr/share/graylog/data/journal/graylog2-committed-read-offset -rw-r--r--. 1 root root 9 Dec 25 04:02 /usr/share/graylog/data/journal/graylog2-committed-read-offset После рестарта: [root@ib1 prod]# docker exec -it graylog bash root@942b241883da:/usr/share/graylog# ls -la /usr/share/graylog/data/journal/graylog2-committed-read-offset -rw-r--r--. 1 graylog graylog 9 Jan 2 20:11 /usr/share/graylog/data/journal/graylog2-committed-read-offset Также проверил в контейнере clickhouse - такая же история.
George
Не удивлюсь, что центось и забыли в вольюмах прописать z Z - надо для правильной работы меток selinux
Konstantin
Помогите задебажить, плиз: первые попытки использовать докер на бою (до этого использовали только для тестов и пилотов). Беда в том, что в различных докеризованных приложениях (graylog, clickhouse, redash) через несколько часов работы (6-24 часа) появляются ошибки Access/permission denied при записи в файлы. При этом простой restart контейнеров исправляет проблему еще на некоторые X часов. Сервер новый (72 CPU, 256 Gb RAM, 16Tb sas raid XFS). В какую сторону копать? Примеры ошибок: Redis из набора контейнеров redash очередную регулярную операцию записи в rdb файл выполняет успешно и через 5 минут fail {"log":"1:M 31 Dec 04:16:13.038 * 100 changes in 300 seconds. Saving...\n","stream":"stdout","time":"2018-12-31T04:16:13.039184451Z"} {"log":"1:M 31 Dec 04:16:13.039 * Background saving started by pid 131\n","stream":"stdout","time":"2018-12-31T04:16:13.039402225Z"} {"log":"131:C 31 Dec 04:16:13.050 * DB saved on disk\n","stream":"stdout","time":"2018-12-31T04:16:13.050413019Z"} {"log":"131:C 31 Dec 04:16:13.050 * RDB: 0 MB of memory used by copy-on-write\n","stream":"stdout","time":"2018-12-31T04:16:13.050956288Z"} {"log":"1:M 31 Dec 04:16:13.141 * Background saving terminated with success\n","stream":"stdout","time":"2018-12-31T04:16:13.141947942Z"} {"log":"1:M 31 Dec 04:21:14.086 * 100 changes in 300 seconds. Saving...\n","stream":"stdout","time":"2018-12-31T04:21:14.086386127Z"} {"log":"1:M 31 Dec 04:21:14.086 * Background saving started by pid 132\n","stream":"stdout","time":"2018-12-31T04:21:14.086644556Z"} {"log":"132:C 31 Dec 04:21:14.086 # Failed opening .rdb for saving: Permission denied\n","stream":"stdout","time":"2018-12-31T04:21:14.086918159Z”} Clickhouse около суток принимал поток логов прокси-сервера 500-1000 eps, и внезапно пошли ошибки записи в файл: 2018.12.30 04:27:25.768115 [ 34 ] {} <Error> void DB::SystemLog<LogElement>::flush(bool) [with LogElement = DB::QueryThreadLogElement]: Poco::Exception. Code: 1000, e.code() = 13, e.displayText() = Access to file denied: /var/lib/clickhouse/data/system/query_thread_log/tmp_insert_201812_2215_2215_0, e.what() = Access to file denied Graylog принимает 2000-4000 eps различных логов, и в какой-то момент Kafka в его составе теряет возможность записи в файл graylog2-committed-read-offset, в который до этого постоянно шла запись. 2018-12-19 04:16:42,906 INFO : org.apache.directory.api.ldap.codec.standalone.CodecFactoryUtil - Registered pre-bundled extended operation factory: 1.3.6.1.4.1.1466.20037 2018-12-19 04:17:59,513 ERROR: org.graylog2.shared.journal.KafkaJournal - Cannot write /usr/share/graylog/data/journal/graylog2-committed-read-offset to disk. java.io.FileNotFoundException: /usr/share/graylog/data/journal/graylog2-committed-read-offset (Permission denied) CentOS 7.6.1810. docker --version Docker version 18.09.0, build 4d60db4 docker-compose --version docker-compose version 1.23.1, build b02f130 mount … /dev/mapper/vgsas-sas on /mnt/sas type xfs (rw,nosuid,nodev,noatime,seclabel,attr2,inode64,logbsize=64k,sunit=128,swidth=2048,noquota) df -h … /dev/mapper/vgsas-var_lib_docker 48G 30G 18G 63% /var/lib/docker /dev/mapper/vgsas-sas 16T 497G 16T 4% /mnt/sas
вот здесь внизу про версии ОС и докера
Konstantin
Про SE linux /usr/sbin/getenforce Enforcing
George
/var/lib/docker на отдельном разделе. Хм. Тоже может быть фактором для "взорваться". Вот честно скажу - именно такой проблемы не было, но попробуйте selinux отключить
George
Вероятнее всего все начнет работать
George
Дальше это будет поводом чтобы разобраться с метками 😂
Александр
Как-нибудь можно заставить использовать кеш зависимостей из домашней папки, если в Dockerfile выполняется их скачивание. Пока вариант - использовать multistage и ложить туда кеш, но в multistage мне не нравится то, что будет висеть лишний контейнер, который кстати тоже нужно быдет собирать и отправлять в registry
Александр
Пример - php зависимости - composer install, если есть кеш в ~/.composer, то в большинстве случаев выполняется просто копирование вместо скачивания. Но проблема в том, что эта папка на хосте
Александр
А реверс-прокси jwilder/nginx-proxy работает со swarm или только у меня не заводится?
Konstantin
Не удивлюсь, что центось и забыли в вольюмах прописать z Z - надо для правильной работы меток selinux
Центось и в вольюмах я не прописывал z Z. Попробовал прописать :z в строке мапинга. Понаблюдаю. Спасибо!
Александр
Кеш хранится на раннере. Но может храниться и в артефактах, например, но команды в Dockerfile почему-то не юзают его
Александр
А когда последний релиз был? Раньше не умел
спасибо, теперь моя душа спокойна. А не подскажешь какие альтернативы умеют?
Bat
Ну или есть https://phpdocker.io/generator если нужно под определенный проект
Maxim
Ну или есть https://phpdocker.io/generator если нужно под определенный проект
Новичкам лучше воздержаться от использования данного ресурса
Maxim
Ну или есть https://phpdocker.io/generator если нужно под определенный проект
редкий специалист понимает что создал генератор, а новичек купит мыло и веревку из за этого if (! -e $request_filename)
Bat
редкий специалист понимает что создал генератор, а новичек купит мыло и веревку из за этого if (! -e $request_filename)
я даже логически не зная конфигов nginx понимаю что !-e это if not exists (наверно), хотя скорее всего загуглю
Bat
так что да, новичек либо разберется как настроить так чтобы работало, либо пойдет читать доку и настраивать свой конфиг) Шишки повсюду и чем больше мы их набиваем - тем больше растем)
Maxim
я даже логически не зная конфигов nginx понимаю что !-e это if not exists (наверно), хотя скорее всего загуглю
спросите у google сколько фаз жизненного цикла у запроса в nginx и как они работают, конфигурация nginx это тот еще ребус
Maxim
так что да, новичек либо разберется как настроить так чтобы работало, либо пойдет читать доку и настраивать свой конфиг) Шишки повсюду и чем больше мы их набиваем - тем больше растем)
использование if в nginx конфигах необходимо избегать, использовать if разрешено если вам в лицо смотрит дуло пистолета или рядом с вами террорист угражает взорвать бомбу если вы этого не сделаете
Maxim
Maxim
а как вы настраиваете отдачу статики?
без использования if в конфигах nginx
Ramil
Господа, например asterisk рекомендует все файлы и либы chown -R asterisk:asterisk. Есть ли в этом смысл если в докер пихать?
Anonymous
Telegram Marketing Tools Telegram bulk sender Telegram group scraper Advertising software Channel real subcribers Fake member adder Telegram Thunder Software:Copy telegram group members Telegram Adrenaline Bulk Sender: automatic detect group link and join for advertising Telegram fake member and view: Increase Channel and Group with Fake Member and Fake View. Without extra cost. Telegram Vote Bot: Telegram Spell Auto increase vote, poll, like, click and inline keyboard. Telegram automatic account builder : Create telegram account with STAT format, for all of API software. Our Site tgMember.com tgMemberOfficial@gmail.com +989216973112 whatsapp & skype free test befor payment