@ru_docker

Страница 241 из 610
Виталий
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

Виталий
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

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

Виталий
27.12.2016
13:14:36
я не на каждой своей машине делаю рута с 982:972
а ну попробуй такое же с COPY сделать и без массива

у меня вот что в контейнере после 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
а, то есть ты хочешь сказать, что если я лью сырые сорцы то их кидает в контейнер демон который работает под рутом. В итоге имеем файлы в контейнере под рутом. А если мы кидаем архив, то файлы не меняються...и попадют с такими правами как были запакованы

я уловил мысль?

Виталий
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
Если учишся - сначала попробуй
ок, я то решу. Но мошно узнать исход заранее? Когда делается git clone в Dockerfile какие права имеют файлы?

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
USER так же влияет на CMD и ENTRYPOINT
это я уже знаю, но будет ли он потом создан в контейнере? я уже пробую конечно собрать и посмотреть самому, но все же

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
@voskobovich как вариант можно в образ складывать /docker-entrypoint.sh и в нем chown -r www-data:www-data /app размер образа не изменится, profit!
я читал про этот метод... но я не понял когда запускается этот entrypoint. И почему не измениться размер образа если изменнеия в файлах есть все равно, а каждое изменение - это новый слой.

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, права на чтение файлов у него есть, на запись права выдам куда надо... минусов не вижу.

в плане безопасности... тоже вопросов нет, хм... я что-то не замечаю?

Виталий
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-файле указать? (маны чрезмерно скудные на этот счет…)

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

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
есть подозрение что вот это не верно. хотя может просто я что-то делал не так. Опишите плз как какой нибудь пхп завернуть на базу на хостмашине
Ну если база именно на хост -машине, без контейнера, то network в host режиме это действительно выход. А если база на другом сервере то к ней можно просто обратиться по fqdn

Виталий
28.12.2016
21:07:06
Ребята, не проектируйте инфраструктуру которая рассчитана на "свой веб сервер под каждый проект". Вы не сможете поднять два сервера на одном хосте :( именно на это напоролся сейчас я...

а так все красивенько было скомпоновано в docker-compose.

Фак, бд и мемкеши кажется можно завернуть в локальные сети между композером, и таким обзразом поднять под каждый проект свою БД. Верно?

Страница 241 из 610