@docker_ru

Страница 785 из 1375
ivan
18.09.2018
16:21:48
Подскажите пожалуйста, во время сбора образа пытаюсь заполнить базу нужными полями, но вот в этой строчке RUN NODE_ENV=production npm run sequelize db:seed:all происходит ошибка, не получается приконнектится к db:5432, при этом если ее убрать то после компиляции образа и запука доступ к базе есть, как быть и что я делаю не так? https://codeshare.io/5Q6QYW

Konstantin
18.09.2018
16:24:33
тебе сид нужно не в Dockerfile, а в контейнере делать

Google
Konstantin
18.09.2018
16:24:56
в Dockerfile только то, что относится конкретно к этому образу

ivan
18.09.2018
16:25:54
Хм, т.е. руками заходить в кнтейнер и делать?

Konstantin
18.09.2018
16:26:26
ну образно говоря так

ivan
18.09.2018
16:27:00
как сделать чтобы была разовая инициализация данных после запуска контейнера? Не руками же это делают каждый раз?

Если на 1 машину ставить то ок, зайти и прописать при деплое что нужно не проблема, но есть же чуваки которые ставят на десятки и сотни машин, полюбому ведь как-то автоматизируют

Corsars
18.09.2018
16:35:33
Зачем, запиши в таске при деплое :-)

ivan
18.09.2018
16:37:09
таске всмысле баш скрипт написать?

Сергей
18.09.2018
16:43:53
тут форвардинг на хосте надо настраивать для контейнеров...
Т.е. это на iptables править? А в остальном всё так (использую дефолтный bridge)?

Pavel
18.09.2018
16:58:15
Сергей
18.09.2018
17:03:48
А ещё не забыть в ядре форвард разрешить
Чего-то я не силён в этом направлении... ( Подскажите, пожалуйста, что почитать в этом направлении?

SlavikMIPT
18.09.2018
17:09:40
Народ, кто юзал кадди, что делаю не так? в docker-compose.yml лейблы от кадди добавил, а он всеравно не редиректит правильно?!?
https://tgcloud.xyz:2015 { root /var/www/tgcloud.xyz tls slavikmipt@gmail.com filemanager / /var/www/tgcloud.xyz/ { url / no_auth allow_new true allow_publish true allow_edit true allow_commands false locale en } } не знаю поможет или нет, но на всякий случай скину свой Caddyfile)

уже не помню в чем там была проблема, но тоже долго возился

Google
qww
18.09.2018
17:16:08
Чего-то я не силён в этом направлении... ( Подскажите, пожалуйста, что почитать в этом направлении?
На машинах локальной сети нужно прописать роут к контейнерам вида ip route add 192.168.80.130 via 192.168.80.2

SlavikMIPT
18.09.2018
17:18:51
я с глючстером вот так сделал

суть в чем - shared монтируется как volume nfs, а local монтируется к папке просто

Ruslan
18.09.2018
17:20:15
я с глючстером вот так сделал
А я подумал зачем мне монтировать и просто скопировал через docker cp . Просто я хотел по правильному сделать, а так никто не делает

Ruslan
18.09.2018
17:22:46
это разные вещи
Согласен. В моем случае простое cp т.к. нужен был файл, а если нужно логи тянуть, то я читал что через name volume можно

SlavikMIPT
18.09.2018
17:23:41
Согласен. В моем случае простое cp т.к. нужен был файл, а если нужно логи тянуть, то я читал что через name volume можно
монтирование это включение какой то файловой системы в общее пространство имен

так что про то что монтируется откуда то куда то - бред

особенно когда речь о докере идет что из докера монтировать что из хост системы - вызываются одни и те же системные вызовы одного и того же ядра

можно как находясь в докере примонтировать том, так и в хост системе

просто не нужно путать монтирование и пробрасываение забыл слово правильное

sudo docker run -v /etc/nfs:/mnt:shared \ -v /etc/glusterfs:/etc/glusterfs:z \ -v /var/lib/glusterd:/var/lib/glusterd:z \.....



при запуске контейнера вот это происходит без доп параметров - системным вызовом unshare от процесса отвязываются все пространства имен

сеть, каталоги, айди процессов и тд

потом делается форк и дочерний процесс существовать продолжает в чистом поле так сказать

sudo docker run -v /etc/nfs:/mnt:shared \ -v /etc/glusterfs:/etc/glusterfs:z \ -v /var/lib/glusterd:/var/lib/glusterd:z \.....
вот этими параметрами мы говорим, что хотим чтобы дочерний процесс видел папки эти и в его пространстве имен он к ним будет по имени после двоеточия обращаться

а также права чтения записи указываем

то есть тут мы находимся в одной фаловой системе и ниче с ней не делаем

Google
SlavikMIPT
18.09.2018
17:38:15
но если например контейнер создает в себе файловую систему какую то - например сетевую, то для того, чтобы пространство имен этой файловой системы оказалось в файловой системе другой какой то - например хост ОС - нужно выполнить их сопряжение

так как они устроены по разному и чтобы в выбранной нами папке хост системы появилось пространство имен, например сетевой файловой системы - нужен драйвер

mount -t glusterfs s1.mediatube.xyz:/shared /mnt/shared вот тут как раз -t говорит какой драйвер использовать

Konstantin
18.09.2018
17:40:50
ты даже вопрос не можешь понять

SlavikMIPT
18.09.2018
17:45:14
Semen
18.09.2018
17:49:57
Всем привет Использую для поднятия зоопрака контейнеров docker-compose. Поднимаю db, redis, приложение. Как мне гарантировать, что db и redis будут подняты раньше, чтобы при старте контейнера с приложением накатить маграции и данные в хранилища?

Подскажи, пожалуйста

Konstantin
18.09.2018
17:51:07
никак, сделать так, чтобы скрипт миграции ждал зависимости

Alexey
18.09.2018
17:51:34
Semen
18.09.2018
17:52:12
Alexey
18.09.2018
17:52:32
А что не так с depends?
если health check нет, то следующий контейнер начнет запускаться независимо от того, стартанула ли база в первом

Alexey
18.09.2018
17:52:57
В самом compose файле?
ну health check в докерфайле, а depend в композе, да

Semen
18.09.2018
17:53:15
Alexey
18.09.2018
17:53:19
И уже от него зависимо запускать апп

Alexey
18.09.2018
17:53:57
Понял, спасибо
https://docs.docker.com/engine/reference/builder/#healthcheck тут про то, как healthcheck делается, про depend on тоже найдешь в доке композа

Alexey
18.09.2018
17:54:11
Ну это уже ньюансы)
так он эти ньюансы и лечит :)

Google
SlavikMIPT
18.09.2018
17:54:17
А что не так с depends?
он не будет ждать пока они запустятся

SlavikMIPT
18.09.2018
17:55:17
monit можно

Robert
18.09.2018
17:56:04
Zabbix

Konstantin
18.09.2018
17:56:27
L1 24\7 команду повесить на контейнер

не страдайте

Yan?
18.09.2018
18:16:41
есть у меня простой docker-compose файл web-server: build: ./web-server ports: - "9090:9090" links: - "postgres:localhost" postgres: image: postgres container_name: codesearch-db Трабл в том, что приложение не видит базу Connection to localhost:5432 refused (знаю что links устарело) я если правильно понимаю что по дефолту всегда bridge network и контейнера друг друга видят. Или нужно host network делать?

Konstantin
18.09.2018
18:18:46
убери линкс - ненужное, замени localhost на postgres

и уже почитайте про основы композа

Yan?
18.09.2018
18:19:41
>замени localhost на postgres это вы про изменение в коде приложения?

Konstantin
18.09.2018
18:20:01
да

мы

имя сервиса = днс имя по которому можно подключиться

Robert
18.09.2018
18:28:28
В кастомной сети

Sergey❄️
18.09.2018
19:10:04
Как адекватно создавать несколько дерикторий через mkdir в докерфайле, одним RUN?

Taz
18.09.2018
19:13:51
Аля mkdir test test2 test3

Sergey❄️
18.09.2018
19:14:11
mkdir умеет в несколько опций ;)
Ну это "ТРУ" вариант?)

Taz
18.09.2018
19:14:16
А вот mkdir test && mkdir test2 был бы не тру

Google
Taz
18.09.2018
19:15:36
почему?
Больше буков

Буковы лишние ненужны

Anton
18.09.2018
19:31:15
Linux: host> mkdir pp && docker run --rm -it -v $PWD/pp:/pp alpine guest> touch /pp/1 host> $ ls -l pp -rw-r--r-- 1 anton staff 0 Sep 18 22:23 1 Mac: host> mkdir pp && docker run --rm -it -v $PWD/pp:/pp alpine guest> touch /pp/1 host> $ ls -l pp -rw-r--r-- 1 root root 0 Sep 18 19:24 1 Почему на маке и линуксе поведение разное и как на линуксе добиться того же, что и на маке?

(в плане group/user создаваемого файла)

Dmitry
18.09.2018
19:52:02
не создавай папку - он сам от рута создаст и примонтирует с правами root:root

Anton
18.09.2018
19:53:50
не создавай папку - он сам от рута создаст и примонтирует с правами root:root
мне нужно, чтобы на хосте итоговая папка со всем содержимым была пользователя и группы, который запустил контейнер

Dmitry
18.09.2018
19:55:07
тогда надо использовать userns и маппинг юзеров https://docs.docker.com/engine/security/userns-remap/#prerequisites

либо создавать при запуске контейнера юзера с теми же uid gid, что и владелец папки

с помощью entrypoint-скрипта

Anton
18.09.2018
19:57:52
а с помощью RUN это не получится сделать?

а, при запуске контейнера

ivan
18.09.2018
20:05:51
как можно отмониторить в entrypint скрипте что все контейнеры (либо определенный) смонтирован?

Страница 785 из 1375