Rumar
То есть up это и билд и ран?
Угу. Он будет обновляться автоматически
Анатолий
Есть ли полный аналог CMD для docker-compose.yml?. я делаю Dockerfile только для того чтобы написать CMD [ "php-fpm" ]
Анатолий
Можно ли в docker-compose.yml для сервиса php прописать docker-php-ext-install pdo_mysql? какая команда нужна?
Анатолий
run?
RUN же это Dockerfile
Anton
Можно ли в docker-compose.yml для сервиса php прописать docker-php-ext-install pdo_mysql? какая команда нужна?
Нет, нельзя. Docker compose управляет запуском сервиса, а установка расширения должна происходить до запуска php-fpm
Anton
У меня безумный вопрос. Возможно ли в уже запущенном контейнере изнутри сделать umount директории, которая замаунтена на хост машину? При попытке sudo umount %PATH% получаю: umount: %PATH%: must be superuser to unmount..
Anton
Все, сам нашел ответ. Можно, но только, если контейнер запущен с флагом --privileged.
А чтобы для собственного registry добавить credentials - мне надо login выполнить? И всё? Я хочу ГДЕ-ТО (в каком-то конфиге) сохранить username, а пароль вбивать при docker compose up - чтобы спрашивал (--password-stdin)
Fat
Как в докере посмотреть разницу между двумя переменными? Ситуация такая, задаю значение переменной вручную в докерфайле строка вида "1.0.0.0" Билд проходит нормально. Но если я получаю строку "1.0.0.0" через powershell из файла. Проверяю переменную, она в формате строки. То билд отваливается с ошибкой, неверный формат версии. Не могу понять что не так, может внутри докера между ними есть какая-то разница. Образ винды
Fat
Fat
dimage
мб ктото крутит wordpress за nginx proxy manager на docker, поделитесь docker-compose.yml
Евгений
Всем добрый вечер. Скажите пожалуйста, кто может поднять уже готовые проект по Yii2 на Docker? И сколько это стоит?
Null
Как развернуть готовое приложение в облаке? Приходите на практическое занятие с DevOps-инженером VK Cloud ⏰ Когда: 24 августа, 17:00 (мск) 📍 Регистрация Спикер: Алексей Кузнецов, DevOps-инженер VK Cloud DevOps-подходы помогают упростить процесс развертывания приложения. На вебинаре вместе с экспертом вы разберете, как их использовать на практике: развернете автоматизированную инфраструктуру в облаке VK Cloud, настроите процесс CI/CD для развертывания по Commit на примере приложения на Django. Что будет на вебинаре: 🔹 Разбор основ использования Terraform, Ansible, Docker-compose 🔹 Изучение основных объектов VK Cloud и Openstack 🔹 Создание простого пайплайна доставки 🔹 Развертывание готового приложения в облаке Для выполнения практического задания потребуются: 🔹 любой дистрибутив на базе Linux: MacOS или Windows c подсистемой Linux; 🔹 Openstack client 5.7, Ansible 2.9, Terraform v1.1.9. Зарегистрироваться
Александр
Всё дело в контейнерах
Dmitry
ХЕЛП! обновил docker desktop и теперь в шторме когда захожу в контейнер через сервисы не могу ничего в терминал вводить в самом контейнере а попробовал через docker desktop так там перестали работать стрелки вверх и вниз
lolmaus
Вопрос! У меня контейнеры запускаются через Docker Compose. Я не копирую кодовую базу внутрь контейнера, а подключаю ее с помощью volumes:. Когда docker-compose.yml делает npm install, папка node_modules/ создается на хост-машине, что очень удобно, т. к. можно заглядывать в нее с помощью IDE, например. Но вот у меня возникла такая задача: при первом запуске контейнера нужно сидировать базу данных. Логично было бы сделать это в Dockerfile, но в Dockerfile: * нет доступа к файлам проекта (для этого нужно запускать внешние команды, либо копировать файлы проекта в образ), * нет доступа к node_modules/, * нет доступа к другим контейнерам. А docker-compose.yml исполняет команды при каждом запуске, в то время как мне нужно сидирование запустить только один раз. А npm start — каждый раз.
Artyom
подскажите пожалуйста, сделал вольюм инспект, но мне пишут, что такой директории не существует
Artyom
"Mountpoint": "/var/lib/docker/volumes/elastic_dumps/_data"
Artyom
то есть я из терминала не могу туда попасть
Anton
Например, MySQL контейнер поддерживает авточтение sql файлов при инициализации БД в контейнере. Если у тебя парочка простых sql запросов и MySQL, то можно таким образом, отработает один раз. Еще можно переопределить entrypoint на свой скрипт, который перед запуском приложения будет проверять состояние базы и сидировать ее при необходимости, а дальше запускать приложение.
lolmaus
А что именно сидить базу должно и какая БД?
База Mongo, сидирование каким-то Node скиптом.
Anton
Ну тогда можно через свой entrypoint, проверять там БД и запускать скрипт сидирования при необходимости, а уже после сидирования запускать само приложение
Anton
База Mongo, сидирование каким-то Node скиптом.
а, так тьфу, образ MongoDB поддерживает ту же самую схему, что и MySQL образ
Vector 7
Коллеги, добрый день! Поделитесь пожалуйста мудростью) В каких случаях может пересобраться контейнер у docker compose? Есть основной пайп для сборки дев окружения, в этой репе лежат файлы с указанием урла реп и коммита для сборки. Меняется только коммит для необходимых сервисов(пример front, back, db, redis)
Anton
> В каких случаях может пересобраться контейнер у docker compose? docker compose только читает конфиг и запускает сервисы. Контейнер может быть пересоздан только в случае изменений в запускаемом образе
Anton
Если были изменения в образе и после был выполнен pull, то тогда может быть пересоздан
Anton
Сложно воспользоваться функционалом, который именно для этого и предназначен? Ну что ж.
lolmaus
О, пропустил это сообщение. Спасибо, это примерно то, что я и искал.
Vector 7
Изменения вносятся в docker-compose.yml?
да только в них. Их не трогали, но компосе почему то пересобрал 15 из 20 сервисов
Vector 7
при этом поменяли только комит у одного сервиса
Anton
Ну начнем с того, что docker compose ничего не пересобирает, он лишь формирует команду запуска на основе конфига. Если контейнер был пересоздан, значит были обнаружены изменения в образах, которые используется в обозначенных сервисах.
Vector 7
понял Благодарю
lolmaus
а, так тьфу, образ MongoDB поддерживает ту же самую схему, что и MySQL образ
Проблема в том, что скрипт лежит в другом контейнере. Это не проблема, могу пробросить volumes:. Но еще придется в mongo контейнер устанавливать ноду, и для этого я явно не буду копировать Dockerfile из образа node, так как он невероятно сложный. А это значит, что версии ноды будут немного отличаться... Ну и тащить ноду в контейнер ради одного скрипта, когда этот скрипт уже имеется в контейнере из образа node, — это просто неэффективно. Короче, интуитивно мне кажется, что это неоптимальный способ. Я думаю, правильно тут было бы настроить как-то так: — Docker Compose запускает все контейнеры, пробрасывает порты, директории и т. п. Но внутри контейнеров ничего не запускается. — Далее какой-то простенький инструмент orchestration/provisioning проходится по образам и запускает в них сервисы в нужном порядке, инициализирует их, сидирует и прочее. — Он же ведет учет того, что сидирование было выполнено. И для этого не нужно писать скрипт, который будет заглядывать в БД и эвристически определять, надо ее сидировать или нет (в какой-то момент БД эволюционирует настолько, что этот скрипт решит, что она несидирована и снесет всё нахрен).
Anton
люди работающие с macvlan docker ответьте https://stackoverflow.com/questions/73399119/identifying-openvpn-clients-on-sites-on-the-internal-network почему не работает сеть
Anton
Проблема в том, что скрипт лежит в другом контейнере. Это не проблема, могу пробросить volumes:. Но еще придется в mongo контейнер устанавливать ноду, и для этого я явно не буду копировать Dockerfile из образа node, так как он невероятно сложный. А это значит, что версии ноды будут немного отличаться... Ну и тащить ноду в контейнер ради одного скрипта, когда этот скрипт уже имеется в контейнере из образа node, — это просто неэффективно. Короче, интуитивно мне кажется, что это неоптимальный способ. Я думаю, правильно тут было бы настроить как-то так: — Docker Compose запускает все контейнеры, пробрасывает порты, директории и т. п. Но внутри контейнеров ничего не запускается. — Далее какой-то простенький инструмент orchestration/provisioning проходится по образам и запускает в них сервисы в нужном порядке, инициализирует их, сидирует и прочее. — Он же ведет учет того, что сидирование было выполнено. И для этого не нужно писать скрипт, который будет заглядывать в БД и эвристически определять, надо ее сидировать или нет (в какой-то момент БД эволюционирует настолько, что этот скрипт решит, что она несидирована и снесет всё нахрен).
Ноду в контейнер с БД пихать точно не нужно. Описанная тобой схема - то же самое, что и я предложил с entrypoint. Только в моем случае, ты пишешь 1 скрипт, который запускается в одном контейнере по условию, а предложенная тобой схема масштабировала до отдельного контейнера, который проходится по нескольким образам, что-то там про провизионирует/оркеструет, еще и все равно придется писать ентрипоинт, чтобы переводить их в idle состояние какое-то, пока процесс инициализации не будет окончен. На самом деле, задумайся дважды: а точно прям нужно автоматизировать процесс сидирования или это не так критично. Если все же хочется, то я советую пойти путем просто кастомного ентрипоинта и в нем перед запуском ноды (или что там у тебя за приложение) проверять требуется ли сидирование или нет. Причем, совсем необязательно идти в базу и эвристически проверять, ты можешь воспользоваться тем же самым механизмом, который использует оригинальный образ MongoDB для проверки происходит ли сейчас инициализация контейнера или нет. Как это сделать - можешь подсмотреть вот здесь -> https://github.com/docker-library/mongo/blob/master/5.0/docker-entrypoint.sh#L262 Таким образом, все, что тебе понадобится: - изменить конец своего Dockerfile, указав там свой кастомный entrypoint.sh - написать небольшой баш скрипт, который перед запуском приложение будет проверять требуется ли инициализация сейчас и, если да, то будет запускать сидирование
lolmaus
А entrypoint.sh запускается на этапе сборки образа? Это мне не подходит, потому что на этапе сборки образа он не имеет доступа ни к файлам проекта (если их вручную не скопировать), ни к node_modules/, общим для нескольких контейнеров, ни к другим контейнерам — потому что Docker Compose их еще не слинковал.
lolmaus
Прошу прощения за упертость. Я ни на чем не настаиваю, а просто пытаюсь разобраться по принципу "в споре рождается истина".
Anton
Нет, в Dockerfile ты просто указываешь путь на свой ентрипонит скрипт. А при старте контейнера этот скрипт уже будет запускаться, имея доступ ко всем файлам, который ты там намонтировал
lolmaus
Понял. Попробую.
lolmaus
Благодарю сердечно.
Anton
Прошу прощения за упертость. Я ни на чем не настаиваю, а просто пытаюсь разобраться по принципу "в споре рождается истина".
Без проблем. Я сам долго голову ломал с похожими задачами, пока не научился пользоваться благами своего ентрипоинта.
sd_fx || CFOP
Привет всем. Помогите понять, с докер композом раньше не работал и сейчас 2 контейнера не могу там соеденить. Если кто шарит и у кого есть минутка - отпишитесь, я не думаю, что отниму много времени
Volen'De
Привет. Вопросы по chef принимаются?
Dan
Привет. Вопросы по chef принимаются?
Ну теперь уже заинтриговал — спрашивай :)
Volen'De
Как обновить версию руби?
Volen'De
Не в скриптах, а в системе
Volen'De
У меня билдится через ruby-ng, но старую версию
Volen'De
Ну, и хостится это добро на opsworks
а Redis обязательно нужен для cAdvisor? (в смысле depends_on) Он просто один из возможных storage driver plugins - я правильно понял? Или зависит от того как накручены интервалы? Планирую запустить cAdvisor standalone на Docker-хосте, Prometheus уже есть.
da
Больше подробностей?
Max xbim 🌴
Он просто один из возможных storage driver plugins - я правильно понял? Да
Max xbim 🌴
не обязателен, cAdviser стендлоун работает
Евгений
Всем привет. Нужна ваша помощь. Как в docker контейнер NGINX прокинуть свой конфиг? Что необходимо вам выслать, чтобы вы посмотрели настройки?
Евгений
Прокинуть пытаюсь через Dockerfile, но вообще в проекте и то и то есть
Евгений
Евгений
Евгений
Евгений
Evgeniy
а ты не забыл указать папку docker ?
Evgeniy
COPY ./docker/development/nginx/conf.d /etc/nginx/conf.d
Evgeniy
вообще важный вопрос где располагается Dockerfile и в каком контексте он исполняется
Евгений
Я так пробовал, но сейчас попробую с точкой перед docker
Evgeniy
вместо тысячи скриншотов tree
Евгений
вместо тысячи скриншотов tree
Т.е. сразу conf.d писать? Я тебя верно понял
Evgeniy
Т.е. сразу conf.d писать? Я тебя верно понял
зависит от того где запускается команда $ docker build <и что тут передается точка или какой то контекст>
Dimonchik
привет) нужно переписать docker-compose слева, так чтобы с Dockerfile пока не совсем разобрался можете подказать что ещё нужно дописать справа/исправить?
Evgeniy
если списать то никому от этого лучше не станет