Rumar
Анатолий
Есть ли полный аналог CMD для docker-compose.yml?. я делаю Dockerfile только для того чтобы написать CMD [ "php-fpm" ]
german
Анатолий
Можно ли в docker-compose.yml для сервиса php прописать docker-php-ext-install pdo_mysql? какая команда нужна?
Анатолий
run?
RUN же это Dockerfile
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
Вопрос!
У меня контейнеры запускаются через Docker Compose. Я не копирую кодовую базу внутрь контейнера, а подключаю ее с помощью volumes:. Когда docker-compose.yml делает npm install, папка node_modules/ создается на хост-машине, что очень удобно, т. к. можно заглядывать в нее с помощью IDE, например.
Но вот у меня возникла такая задача: при первом запуске контейнера нужно сидировать базу данных.
Логично было бы сделать это в Dockerfile, но в Dockerfile:
* нет доступа к файлам проекта (для этого нужно запускать внешние команды, либо копировать файлы проекта в образ),
* нет доступа к node_modules/,
* нет доступа к другим контейнерам.
А docker-compose.yml исполняет команды при каждом запуске, в то время как мне нужно сидирование запустить только один раз. А npm start — каждый раз.
А что именно сидить базу должно и какая БД?
Anton
Например, MySQL контейнер поддерживает авточтение sql файлов при инициализации БД в контейнере. Если у тебя парочка простых sql запросов и MySQL, то можно таким образом, отработает один раз.
Еще можно переопределить entrypoint на свой скрипт, который перед запуском приложения будет проверять состояние базы и сидировать ее при необходимости, а дальше запускать приложение.
Anton
Ну тогда можно через свой entrypoint, проверять там БД и запускать скрипт сидирования при необходимости, а уже после сидирования запускать само приложение
Vector 7
Коллеги, добрый день!
Поделитесь пожалуйста мудростью)
В каких случаях может пересобраться контейнер у docker compose?
Есть основной пайп для сборки дев окружения, в этой репе лежат файлы с указанием урла реп и коммита для сборки. Меняется только коммит для необходимых сервисов(пример front, back, db, redis)
Anton
> В каких случаях может пересобраться контейнер у docker compose?
docker compose только читает конфиг и запускает сервисы. Контейнер может быть пересоздан только в случае изменений в запускаемом образе
Anton
Если были изменения в образе и после был выполнен pull, то тогда может быть пересоздан
lolmaus
Anton
Сложно воспользоваться функционалом, который именно для этого и предназначен? Ну что ж.
lolmaus
Anton
lolmaus
lolmaus
О, пропустил это сообщение. Спасибо, это примерно то, что я и искал.
Vector 7
Anton
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 принимаются?
Volen'De
Как обновить версию руби?
Volen'De
Не в скриптах, а в системе
Volen'De
У меня билдится через ruby-ng, но старую версию
Volen'De
Ну, и хостится это добро на opsworks
⎈
а Redis обязательно нужен для cAdvisor?
(в смысле depends_on)
Он просто один из возможных storage driver plugins - я правильно понял?
Или зависит от того как накручены интервалы?
Планирую запустить cAdvisor standalone на Docker-хосте, Prometheus уже есть.
Max xbim 🌴
⎈
Max xbim 🌴
Он просто один из возможных storage driver plugins - я правильно понял? Да
Max xbim 🌴
не обязателен, cAdviser стендлоун работает
Евгений
Всем привет.
Нужна ваша помощь.
Как в docker контейнер NGINX прокинуть свой конфиг?
Что необходимо вам выслать, чтобы вы посмотрели настройки?
mikhail
Евгений
Прокинуть пытаюсь через Dockerfile, но вообще в проекте и то и то есть
Евгений
Евгений
Евгений
Евгений
Evgeniy
а ты не забыл указать папку docker ?
Evgeniy
COPY ./docker/development/nginx/conf.d /etc/nginx/conf.d
Evgeniy
вообще важный вопрос где располагается Dockerfile и в каком контексте он исполняется
Евгений
Я так пробовал, но сейчас попробую с точкой перед docker
Evgeniy
вместо тысячи скриншотов tree
Dimonchik
привет)
нужно переписать docker-compose слева, так чтобы с Dockerfile
пока не совсем разобрался
можете подказать что ещё нужно дописать справа/исправить?
Evgeniy
Evgeniy
если списать то никому от этого лучше не станет