Дмитрий
Если, скажем, отлаживать это дело, нужно каждый раз удалять контейнер, чтобы проверить, применилось ли?
Дмитрий
Если, скажем, отлаживать это дело, нужно каждый раз удалять контейнер, чтобы проверить, применилось ли?
Хз как это работает с монтированием, я туда просто копировал файлы и у меня все работало
Дмитрий
Дмитрий
Я вот думаю, может надо таки удалять все контейнеры?
Sergey
у вас может не пробрасываться том правильно если прав нет на точку монтирования
Дмитрий
у вас может не пробрасываться том правильно если прав нет на точку монтирования
в соседних директориях пробрасывается, дело точно не в правах
Дмитрий
или вы имеете в виду права внутри контейнера?
Sergey
в чем конкретно трабл, я может что то упускаю
Дмитрий
в чем конкретно трабл, я может что то упускаю
контейнер с бд запускается впервой, нужно, чтобы применялся дамп базы. Далее вопросы, если контейнер запускается уже не в первой, дамп не применится? И где, и что будет с данными бд, которые добавились уже в процессе работы контейнера?
Дмитрий
в чем конкретно трабл, я может что то упускаю
про entrypoint можно подробнее? вы имеете в виду делать через консольною команду mysql -u -p bd < dump?
Sergey
1. в зависимости от энтрипоинта и докерфайла, ребилд никто не отменял 2.Когда вы в первый раз прокинули том с базой наружу и после этого убили\изменили контейнер, все данные останутся в томе который был проброшен, тем самым ничего не изменится
Sergey
иначе бы в композе для баз restart:always не было бы смысла
Sergey
он бы херил все данные на корню:)
Дмитрий
он бы херил все данные на корню:)
уже стало более-менее ясно, спасибо (:
Sergey
уже стало более-менее ясно, спасибо (:
главное не запутаться - чтобы при пересборке контейнера при запуске вам заново дамп не грузил
Sergey
надо что то такое прописать в entrypoint если базы нет, грузи дамп если база есть, юзай том
Pasha Chalyk
парни, версии докера на которой собрался имедж и на которой в итоге будет запускаться контейнер должны совпадать?
Aleksey
парни, версии докера на которой собрался имедж и на которой в итоге будет запускаться контейнер должны совпадать?
Нет. При желании, ты можешь собирать имеджы вообще не докером. Рекомендую ознакомиться со структурой имеджа
Pasha Chalyk
спасибо
Pavel
всем привет
Pavel
что лучше использовать для распределённого volume?
Pavel
По дефолту драйвер local. Мне нужно, чтобы сервисы на разных тачках обращались условно к одному и тому же хранилищу
Pavel
понятное дело, можно запилить fsync/rsync на разных тачках, но это ИМХО совсем костыль
Pavel
кто сталкивался? как решали?
Pasha Chalyk
nfs?
Pavel
ну как вариант согласин, можно
Pavel
а что там лучше будет?
Pavel
на glusterfs ещё смотрю и на flocker
🤖
всем привет, докер форева
Alexander
Всем привет. Ковыряюсь с композом, не понимаю одного вопроса: db: env_file: .env.development image: mariadb:latest restart: unless-stopped ports: - 3333:3306 volumes: - mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} При запуске композ мне говорит, что MYSQL_ROOT_PASSWORD и MYSQL_DATABASE не определены. Хотя в .env.development эти переменные указаны. При этом, если я .env.development переименую просто в .env и уберу из композа env_file, то всё отлично работает. Доки говорят, что это какие то разные env-файлы, но не понятно, в чём разница и не соображу, как вообще протолкнуть эти переменные не используя "глобальный" env-файл.
Bohdan
web: env_file: - web-variables.env
Bohdan
он ждет от тебя массив, а ты ему строку подсунул странно, что не крашится
Sergey
Sergey
а так ты должен явно переменные окружения задать
Alexander
web: env_file: - web-variables.env
не, всё равно WARNING: The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.
Bohdan
ну я основываюсь на документации и ошибках, которые вылетали у меня при использовании строки вместо массива в других случаях
Sergey
ну и не должно быть никаких .env.development. точнее кроме девелоперских конфигов никаких .env не должно быть
Bohdan
хм....
Oleg
Ребят, привет, подскажите, какое CI\CD решение лучше для деплоя с гитхаба на remote docker host ?
Sergey
не, всё равно WARNING: The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.
env_file это env_file, это как замена environtment. А если ты делаешь интерполяцию значений из текущего окружения то изволь задать переменные там
Alexander
ну и не должно быть никаких .env.development. точнее кроме девелоперских конфигов никаких .env не должно быть
грубо говоря двакомпозфайла, для дева и прода. У каждого свои переменные и даже докерфайл отличается(в деве больше в контейнер библиотек суётся). И вот как то это нужно собрать воедино. Есть вариант, конечно, скрипт, в котором копируется нужный env-файл в .env и запускается up, но это какой то костыль выходит
Oleg
любое.
ты какое юзаешь ?
Sergey
Поговорка: Семь бед - один gitlab
Oleg
гитлаб есть. но его не заюзать для ci\cd в гитхабе. только если платно
Sergey
ну за гихаб же платите поди)
Maksym
првиетствую) помогите плз в настройке локального дев окружения для разработки ангулар и апи. есть два сервиса в docker-compose - client и server клиент слушает 80 (основной, обновляет браузер, отдает все) и сервер отвечает за апи. Все запросы которые приходят по определенной маске (/api/* и тд) должны проксироваться на сервер (в моем случае 8000 порт) и клиент отдает их обратно по 80. Проблема в том что эти два контейнера должны запускаться отдельно в двух терминалах (стдаут, дебагер на сервере), links: - server не подходит. Есть возможность с client обращаться на localhost:8000 хоста где еспозит сервер? Т.е. через хост их связать
Leo
nginx + location + proxy_pass
Maksym
думаю что-то с сетями нужно проделать, пробую network_mode host
Leo
и выглядит как извращение
Дмитрий
В docker-compose можно ли описать создание crona и будет ли это адекватно работать?
Дмитрий
можно в докерфайле
А можно подробнее?
Maksym
location? у меня сейчас оба порта обрабатывают дев сервера, проблема чтобы с одного одстучаться до второго.. подозреваю что их нужно в одну сеть поместить, только вот как чтобы без боли и дополительных движений (не заставлять других девов что-то конфигурить - все через одну команду)
Leo
поставь вначало nginx который будет проксипасить на оба в зависимости от location
Sergey
А можно подробнее?
а как вы в баше делаете запись в крон, так и делайте, в крайняк прокиньте скрипт который допишет в крон
Leo
либо если как ты делаешь, поставь контейнер в nginx
Leo
который будет кидать туда сюад
Leo
помощь для костылей тут https://habr.com/company/redmadrobot/blog/305364/
Leo
RUN/CMD
Дмитрий
Спасибо
Maksym
все еще пытаюсь достучаться с одного контейнера в другой external_links вроде оно, но дальше чем добавить это и пробовать запустить дело не доходит - то сеть ему надо общую то версии не понятно в какой что работает
Maksym
добавил клиенту external_links: - 'имя_имеджа_сервера:server' захожу в клиент шелл usr/src/client # ping server ping: bad address 'server' оно так должно работать? нид хелп
Vladimir
ты докерную сеть создал им ?
Maksym
не совсем понимаю что такое докерная сеть явно не создавал, но там етсь $ docker network ls NETWORK ID NAME DRIVER SCOPE 1a97e904dbf3 bridge bridge local 4293c949a674 host host local cead0b15ece2 none null local эти можно использовать?
Alexandra
Создаешь сеть в compose-fie networks: local: ipam: config: - subnet: 169.254.0.32/28 А сервису подключаешь так: networks: - local
Maksym
похоже то что надо subnet: 169.254.0.32/28 уточните что это и какие есть варианты
Sergey
подсетка в которой они адреса получат чтобы пинговать друг друга
Alexandra
Можно даже еще проще: Задать "networks: name_network:" а сервису: networks: - name_network и тогда он из какого-то дефолтного списка адресов выдаст
Maksym
в таком случае надо связывать линками? external_links: - 'ИМЯ:server'