Size: a a a

RU.Docker — Официальное Русское Сообщество

2019 March 29

k

kSandr in RU.Docker — Официальное Русское Сообщество
Если ты запускаешь все локально, то твой вариант вполне подходит , если у тебя продакшн и нужно запускать проект в разных местах, тогда лучше использовать оркестратор
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
kSandr
зависит от того чем ты занимаешься и чего хочешь, есть 2 основных подхода
1-ый это который ты описал когда докерфайлы хранятся внутри репозитория с проектом
2-ой это когда докерфайлы хранятся в отдельном репозитории и сохраняются оттуда

1-ый способ удобен когда разработчики сами следят за своим проектом  и т.п.
2-ой способ удобнее когда людей занимающихся докером мало, а проектов много , так их удобней менеджить и ревьюить
Ага, понял
Но смысл один и тот же получается, из которого, я надеюсь, я делаю правильные выводы:
1) Весь проект надо все равно держать в формате гит-репо; (а не предподготовленного образа с предустановленным окружением)
2) Так или иначе должны быть сохранены dockerfile(s) и docker-compose.yml
3) Процесс запуска заключается в клонировании файловой структуры из загруженного репо в контейнер, пробросе портов, запуске сервисов etc - это все должен покрывать docker-compose
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
3 пункт не такой
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Во время билда докерфайлом надо скопировать нужные файлы внутрь образа, сделать все предварительные действия по настройке, залить в докер-регистри получившийся образ. Во время запуска ты только запускаешь готовые сервисы с проброшенными портами. Все файлы уже внутри образа
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
а. тут обратный пример
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Я джангу у себя так упаковываю:
FROM python:3.6

RUN apt-get update \
   && apt-get install -y --no-install-recommends \
       postgresql-client ssh git \
   && rm -rf /var/lib/apt/lists/*

VOLUME ["/articles"]
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip3 install --upgrade pip && pip3 install -r requirements.txt
COPY . .
EXPOSE 8000
ENTRYPOINT ["/bin/sh", "./run.sh"]
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Но приведенный на сайте пример удобен, когда ты еще не доделал код и прямо на ходу исправляешь. Джанга это умеет и этим можно пользоваться.
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
Спасибо большое!
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
Igor
Во время билда докерфайлом надо скопировать нужные файлы внутрь образа, сделать все предварительные действия по настройке, залить в докер-регистри получившийся образ. Во время запуска ты только запускаешь готовые сервисы с проброшенными портами. Все файлы уже внутри образа
Я извиняюсь, кажется остался таки один вопрос :)
Почему, например, не используется такой вариант:

докер-файл в котором на основе образа, например, python3;
помимо прочих дефолтных операций производится git clone, pip3 install -r requirements.txt и сопутствующие созданию окружения команды.

Ну и все, как всегда, обернуто в docker-compose с дефолтными сервисами

Это, получается, почти как у вас, если я правильно понимаю, только за исключением одного момента:
вам не нужно заботиться о том, чтобы чтобы свежая версия была загружена где-нибудь на localhost, возиться с путями (ну вдруг какие-то ограничения появятся), все что вам нужно будет, по идее - docker, docker-compose, и dockerfile основного проекта и docker-compose.yml, и вы сможете собрать этот образ заново где угодно.

Если я правильно понимаю :)
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Alex Dem
Я извиняюсь, кажется остался таки один вопрос :)
Почему, например, не используется такой вариант:

докер-файл в котором на основе образа, например, python3;
помимо прочих дефолтных операций производится git clone, pip3 install -r requirements.txt и сопутствующие созданию окружения команды.

Ну и все, как всегда, обернуто в docker-compose с дефолтными сервисами

Это, получается, почти как у вас, если я правильно понимаю, только за исключением одного момента:
вам не нужно заботиться о том, чтобы чтобы свежая версия была загружена где-нибудь на localhost, возиться с путями (ну вдруг какие-то ограничения появятся), все что вам нужно будет, по идее - docker, docker-compose, и dockerfile основного проекта и docker-compose.yml, и вы сможете собрать этот образ заново где угодно.

Если я правильно понимаю :)
если ты билдишь через раннер, то там отпадает нужда в git clone. раннер сам тебе все подготовит. Если ты билдишь локально, то тем более клонировать ничего не надо.
Ну и в регистри хранить по имени ветки/хэшу коммита/как угодно.
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Там и так не надо возиться с путями. docker build -t <registry image url>:<tag> .
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
вопрос свежести версий как-то вторичен. Есть, например, 3 ветки, для каждой ветки будет свой образ называться свежим
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
Пошел читать дальше, спасибо :)
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Alex Dem
Пошел читать дальше, спасибо :)
В чем код-то храните? битбакет/гитлаб/гитхаб/Etc?
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
Github/публичный
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Alex Dem
Github/публичный
Может, мои данные устарели, но CI еще пару месяцев назад был платным. Так что подсказать ничего не смогу. На гитлабе бесплатный. Даже на официальном сайте
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
Так бы там можно было вписать, что при пуше в ветку надо собирать образ. (Регистри на гитлабе, кстати, тоже есть)
источник

I

Igor in RU.Docker — Официальное Русское Сообщество
> вам не нужно заботиться о том, чтобы чтобы свежая версия была загружена где-нибудь на localhost, возиться с путями (ну вдруг какие-то ограничения появятся)

Это уже задача CI. не надо это делать вручную со своего компа, так как чревато человеческими ошибками.
источник

AD

Alex Dem in RU.Docker — Официальное Русское Сообщество
Igor
Может, мои данные устарели, но CI еще пару месяцев назад был платным. Так что подсказать ничего не смогу. На гитлабе бесплатный. Даже на официальном сайте
На будущее - зафиксировал, но пока сфокусируюсь на самом docker, боюсь уйти в глубокую прокрастинацию. ))
источник