
Pavel
18.09.2018
15:38:45
он для них как маршрутизатор : 2 сетевых интерфейса, 2 сети и для каждой он шлюз


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
таске всмысле баш скрипт написать?

Konstantin
18.09.2018
16:37:12

Сергей
18.09.2018
16:43:53

Pavel
18.09.2018
16:58:15

Сергей
18.09.2018
17:03:48

SlavikMIPT
18.09.2018
17:09:40
уже не помню в чем там была проблема, но тоже долго возился

Google

qww
18.09.2018
17:16:08

SlavikMIPT
18.09.2018
17:18:51
я с глючстером вот так сделал
суть в чем - shared монтируется как volume nfs, а local монтируется к папке просто

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

SlavikMIPT
18.09.2018
17:20:33

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


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

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

Robert
18.09.2018
17:51:51

Semen
18.09.2018
17:52:12

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

Alexey
18.09.2018
17:52:47

Alexey
18.09.2018
17:52:57

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 тоже найдешь в доке композа

Robert
18.09.2018
17:53:57

Alexey
18.09.2018
17:54:11

Google

SlavikMIPT
18.09.2018
17:54:17

Konstantin
18.09.2018
17:54:41

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

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

Google

Anton
18.09.2018
19:15:19

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:46:50

Anton
18.09.2018
19:51:10

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

Anton
18.09.2018
19:53:50

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 скрипте что все контейнеры (либо определенный) смонтирован?