
Виталий
27.12.2016
12:42:29
ну не важно где оно будет собираться, проблему с правами все равноне решает.

Evgeny
27.12.2016
12:42:43
решение проблемы прав - явно их задавать

Виталий
27.12.2016
12:44:05
супер... какого юзера ставить файлам?))

Evgeny
27.12.2016
12:44:22
любого явно созданного

Google

Evgeny
27.12.2016
12:44:35
сделать один id:gid на хосте и внтури - и вперед

Виталий
27.12.2016
12:44:36
в контейнере app. Верно?
вот прикольный тест сделали https://github.com/docker/docker/issues/6119#issuecomment-70606158

Evgeny
27.12.2016
12:47:13

Виталий
27.12.2016
12:47:15
смена прав становиться очень дорогоим удовольствием :)

Evgeny
27.12.2016
12:47:25
меняй снаружи перед билдом

Виталий
27.12.2016
12:47:41
так, снаружи это всмысле на хост машине ?

Evgeny
27.12.2016
12:47:52
да

Виталий
27.12.2016
12:48:14
пфф... так на них сейчас и стоят права юезра docker который на хост машине
а после COPY в контейнер то на них рут
в том то и проблема :)
да, проблема явно остро обсуждается :)

Evgeny
27.12.2016
13:05:44
Так, я сейчас явно проверил еще раз - все нормально рабоатет

Google

Виталий
27.12.2016
13:06:32

Evgeny
27.12.2016
13:07:33
Билдим с этим:
FROM alpine
ADD file.tgz /srv
Видим это:
/ # ls -la /srv/
total 1448
drwxr-xr-x 2 root root 40 Dec 27 13:05 .
drwxr-xr-x 18 root root 221 Dec 27 13:05 ..
-rw------- 1 root root 1222777 Dec 27 12:59 messages
-rw-r--r-- 1 982 972 255787 Aug 25 17:02 mongod.log

Виталий
27.12.2016
13:09:30
а нет, не все...

Evgeny
27.12.2016
13:09:54
я не на каждой своей машине делаю рута с 982:972

Виталий
27.12.2016
13:14:36
у меня вот что в контейнере после COPY
~/html $ ls -l
total 56
-rw-r--r— 1 root root 1622 Dec 27 11:40 LICENSE.md
-rw-r--r— 1 root root 1353 Dec 27 11:40 README.md
а вот что в хост машине
-rw-r--r— 1 docker docker 1622 Dec 27 11:40 LICENSE.md
-rw-r--r— 1 docker docker 1353 Dec 27 11:40 README.md

Evgeny
27.12.2016
13:16:03
А зачем делать копи если можно прочитать Ман?

Виталий
27.12.2016
13:16:52
ну я выбирал между COPY и ADD и узнал что ADD просто чуток больше умеет и работает с архивами
у меня архива нет, так как я делаю git clone с репы делаю в папку и все. Архивов нету... мне надо просто сорцы закинуть в докер

Evgeny
27.12.2016
13:18:03
Поэтому я и говорю про костыли
Потому что если ты посмотришь дампом что льется в демона - ты увидишь, что так идет оттриманный

Виталий
27.12.2016
13:23:30
а, то есть ты хочешь сказать, что если я лью сырые сорцы то их кидает в контейнер демон который работает под рутом. В итоге имеем файлы в контейнере под рутом.
А если мы кидаем архив, то файлы не меняються...и попадют с такими правами как были запакованы
я уловил мысль?

Evgeny
27.12.2016
13:25:15

Виталий
27.12.2016
13:26:23
оооок... понял. Знаний получил, за что спасибо!
А что, если делать git clone в самом Dockerfile. Вариант?

Evgeny
27.12.2016
13:27:25
Да, правда там немного другие проблемы лезут
Но я у себя из контейнера клонб

Google

Виталий
27.12.2016
13:27:59
расскажи как.

Evgeny
27.12.2016
13:28:24
Если учишся - сначала попробуй
Может сам все решишь

Виталий
27.12.2016
13:37:09

Alex Milushev
27.12.2016
13:38:55
Это RUN на нее влияет USER

Виталий
27.12.2016
13:39:40
Это RUN на нее влияет USER
это отличное замечание. Спасибо!
А юзер который указан в USER докерфайла будет потом в системе внутри контейнера?

Alex Milushev
27.12.2016
13:41:50
USER так же влияет на CMD и ENTRYPOINT

Виталий
27.12.2016
13:42:54

Alex Milushev
27.12.2016
13:43:49
Пользователь который указан в USER должен присутствовать в системе

Виталий
27.12.2016
14:32:08
вот круто рассказывают как правильно укаповывать код в контейнеры
http://blog.cloud66.com/how-to-get-code-into-a-docker-container/

Sergey
27.12.2016
18:57:50
> According to Docker's best practices guide, COPY is recommended for most cases.

Павел
27.12.2016
18:58:23
Коллеги, с наступающими!
Тупой вопрос, с которым не первый раз сталкиваюсь.

Sergey
27.12.2016
18:58:47
@voskobovich как вариант можно в образ складывать /docker-entrypoint.sh и в нем chown -r www-data:www-data /app
размер образа не изменится, profit!

Павел
27.12.2016
18:59:00
Что делать с теми средами, которые ставят зависимости в тот же каталог, где исходники? Типа ./node_modules? Невозможно же разрабатывать в режиме -v pwd:/app!
Приходится городить отдельный вызов пакетного менеджера, который бы мне на хост закачал эти несчастные зависимости, чтобы при монтаже каталога внутрь контейнера их там runtime нашел. Для IDE, конечно, это прикольно (иметь исходники библиотек под рукой), но уж больно некрасиво.

Виталий
27.12.2016
19:00:22

Evgeny
27.12.2016
19:01:16
Учите матчасть, блин. Нодмодули могут быть выше

Виталий
27.12.2016
19:01:33
и вообще, скажите, внутри образа хранить исходники кода под рутом - чем плохо? может я с ветряной мельницей боролся?

Google

Павел
27.12.2016
19:01:52

Виталий
27.12.2016
19:02:54
веб сервер от www-data, права на чтение файлов у него есть, на запись права выдам куда надо... минусов не вижу.
в плане безопасности... тоже вопросов нет, хм... я что-то не замечаю?

Sergey
27.12.2016
19:04:45

Виталий
27.12.2016
19:11:21
то есть это скрипт, который стартует каждый раз при запуске контейнера. верно? если да, то круто
ок, но ведь если в контейнере чет после сборки изменить то его размер не измениться пока изменения не закомиттить. Так?

Admin
ERROR: S client not available

Sergey
27.12.2016
19:13:23
хз, я не комичу контейнеры и не задавался вопросом)
но есть подозрения что эти изменения на ФС не отражаются

Виталий
27.12.2016
19:14:11
ну каждый коммит - новый слой :) так что 99% что да, ну тестом можно проверить. А вообще с энтрипоинтом крутая идея. А скажи плиз, когда именно он запускается? в какой момент

Evgeny
27.12.2016
19:19:51
Это плохая идея, в целом. Время отработки чоуна какие?

Sergey
27.12.2016
19:23:29
https://docs.docker.com/engine/reference/builder/#/understand-how-cmd-and-entrypoint-interact
а еще проверил, контейнер не растет в размерах, только /var/lib/docker/aufs/diff/ на несколько байт увеличился
он же diff)

Виталий
27.12.2016
19:43:26
понял, попробую

Alex Milushev
28.12.2016
06:04:42
из вариантов — пакуй из своего кода tarball выстявляя нужные привилегии и добавляй через ADD
что-бы не chown’ить и chmod’ить

Google

Виталий
28.12.2016
06:05:52
Ну, пока так может работать

Victor
28.12.2016
07:30:05
А подскажите, плиз, как провернуть следущее: есть сервер1 с несколькими docker-контейнерами, сервер2 с mysql; надо дать возможность коду из контейнеров ходить в mysql. Как такое провернуть вообще можно?

Roman
28.12.2016
07:36:05
возможно network_mode: "host" поможет

Victor
28.12.2016
07:58:47
а как это в compose-файле указать? (маны чрезмерно скудные на этот счет…)

Max
28.12.2016
08:13:54

Victor
28.12.2016
08:14:25
нет - он один там на той машине

corpix
28.12.2016
08:16:31

Roman
28.12.2016
08:16:39
а прям так и указывать
https://docs.docker.com/compose/compose-file/#/networkmode

Victor
28.12.2016
08:17:14

corpix
28.12.2016
08:19:01
Зачем в этом случае network в host режиме не понимаю. Разве что в докер ещё нет человеческой поддержки ipv6 по дефолту(пару месяцев не следил за ним) и база у вас на ipv6-only хосте. А так это не обязательно

Roman
28.12.2016
08:21:25

corpix
28.12.2016
08:22:57

Max
28.12.2016
08:25:46

Виталий
28.12.2016
21:07:06
Ребята, не проектируйте инфраструктуру которая рассчитана на "свой веб сервер под каждый проект". Вы не сможете поднять два сервера на одном хосте :( именно на это напоролся сейчас я...
а так все красивенько было скомпоновано в docker-compose.
Фак, бд и мемкеши кажется можно завернуть в локальные сети между композером, и таким обзразом поднять под каждый проект свою БД. Верно?