Artem Kasapchuk
я почитал вроде некоторые запускает конйтенры и в них разработку ведут, ну как то еще не понял процесс настройки
Ευγένιος
Ευγένιος
Типа заменять MAMP.
Ευγένιος
А разработку ты можешь вести как обычно.
Artem Kasapchuk
спасибо, а как лучше? теоритически кажется лучше вести разработку сразу в контейнерах, я так понимаю потом это всё собирается в образ, отправляется на сервер и там разворачивается, так происходит?
Ευγένιος
Решаешь сам, но я считаю лучше вести разработку как обычно, а потом уже собирать образы.
Ευγένιος
Sergey
а кто мешает билдить код по дефолту но в контейнеры с гита?
Je
"разработка в контейнерах" это дичь полная, обычно сторонние сервисы подымаешь в докере, но приложение свое пишешь как обычно
Sergey
Artem Kasapchuk
ага кажется начинаю понимать, на сервере просто пересобирать образ и данные апа из репы подтягивать
Je
Чтоб "разрабатывать в контейнерах" тебе придется volume подключать, а в проде это плохой паттерн
Sergey
Artem Kasapchuk
я правильно ж понимаю, мне для деплоя даже гонять ничего на сервер не надо, просто одинаковые докер файлы на локалке и сервере держать, на сервер просто тянуть данные с репы и пересобирать и запускать заново контейнеры?
Serg
Билдить на проде не очень хорошо.
Ευγένιος
Да ты просто на докер-хаб потом кидаешь образ и деплоишь на сервер.
Je
Ευγένιος
Собирать каждый раз по новой муторно.
Je
Je
в общем фулл микросервисы нифига не аргумент, локально быстрее и удобней, тем более отлаживать иначе нельзя
Je
я не понял даже, как у него получается собрать разные версии
Sergey
ну деплой поди с разных реп или веток идет
Je
ну да, еще в принципе, если он сделает dep ensure в докерфайле, то без гарантии vgo повторяемости сборки не будет
Je
@livemirsi короч мы тебя не поняли, накидай хоть что за стек и в чем именно сложность повторяемости сборок
Artem Kasapchuk
товарищи, я фронтенр, сейчас надо делать апп с серверным рендерингом,
пытаюсь осмыслить как мне это всё провернуть,
по сути у меня nginx,nodejs,mongodb,elasticsearch,
получается 4 контейнера, по идеи собираю образ отправляю на сервер там разворачиваю тестовый или продакшен.
Пока размышляю над чем, как вести разработку:
1. сразу у себя запускать контейнеры цыплятся к ним, что бы была консоль ноды, монги, и там всё это хранить сразу,
так же непонятно, код апа пушить в гит с контейнра прямо надо будет или как)
2. Разрабатывать приложение nodejs приложение у себя на локалке, при сборке образа упаковывать в контейнер и отправть на сервер
3. Или просто пушить код в репу, на сервере просто подтягивать свежий код и пересобирать образ и запускать его.
И пока по самому процессу деплоя у меня туман, может посоветуйте какие нить толковые материалы с best practices.
Много материала, что такое докер, как создать nginx контейнер с html страничкой, а вот по практике что то совсем не могу найти классных материалов.
Je
1. Разворачивай, цепляйся, для монги не забывай сделать volume, чтобы данные хранились у тебя на фс, не в контейнере
2. Разница лишь в том, как тебе удобно:
a) ты можешь прокинуть код через volume
b) ты можешь на каждый чих собирать образ и деплоить стек
c) можешь локально запускать, но тогда все контейнеры из 1) должны быть выброшены портом наружу (expose)
В мире белых людей часто используется c), но никто не будет сильно ругать на другое - всем пофигу как ты разрабатываешь
3) Код в репу ты обязательно пушь
У тебя есть докер и развязанные руки, можешь просто docker-compose юзать, что проще, можешь swarm, можешь k8s - тебе нужно определиться, чего ты ждешь. Если нужно просто условно заказчику поставить резульатат работы - хватит и просто собрать образ, выкинув в ENV все необходимые параметры для запуска
Sergey
ELK в докере это какой то изврат как по мне, чересчур, проще раннер на ансибл закатать для него
Je
про elk там не было, был elastic, это не одно и то же, elastic быстро и просто запустить в докере
Artem Kasapchuk
о спасибо, кажется начинаю понимать как организовать базу, еластик,вебсервер в контейнеры портами наружу на дев поднятие, а для build приложение тоже в контейнер и тогда порты можно внутри докера организовать, после собираю образ и деплою его.
Sergey
лучше бросить это г и ставить k8s
Sergey
там проще будет
Je
k8s по существу зона ответственности девопса/админа, но не разработчика
-=LevT=-
Помогите врубиться. Виндузоид, новичок в докер, запускаю экспериментальные фичи docker4windows (—platform=linux). Иду по линуксячьим курсам, некоторые линуксовые контейнеры стартуют аналогично линуксовому докеру, а иные моментально завершаются. В логах типа Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/elasticsearch/nodes/49/node.lock
Как быстро пофиксить мое окружение, чтобы контейнеры из существующих линуксовых образов были им довольны и работали?
-=LevT=-
Полагаю, что надо дать им volume. Есть вот такой пример
'--volume', 'C:\Images\nuget\database:/var/www/db'
'--volume', 'C:\Images\nuget\packages:/var/www/packagefiles'
Можно ли заранее узнать линуксовые директории, которую надо пробросить - или только методом тыка? Типа /usr/share/elasticsearch/data/elasticsearch
Konstantin
1. Разворачивай, цепляйся, для монги не забывай сделать volume, чтобы данные хранились у тебя на фс, не в контейнере
2. Разница лишь в том, как тебе удобно:
a) ты можешь прокинуть код через volume
b) ты можешь на каждый чих собирать образ и деплоить стек
c) можешь локально запускать, но тогда все контейнеры из 1) должны быть выброшены портом наружу (expose)
В мире белых людей часто используется c), но никто не будет сильно ругать на другое - всем пофигу как ты разрабатываешь
3) Код в репу ты обязательно пушь
У тебя есть докер и развязанные руки, можешь просто docker-compose юзать, что проще, можешь swarm, можешь k8s - тебе нужно определиться, чего ты ждешь. Если нужно просто условно заказчику поставить резульатат работы - хватит и просто собрать образ, выкинув в ENV все необходимые параметры для запуска
У меня вопрос в тему, я думал в моём случае разделить на: nginx, 3 три микросервиса ноды (логин и прочее, майн и таскера) и ssr на вуе, всё это организовать через нгин как прокси.
Думаю как задать всё это в композере или надо делать каждому контейнеру свой Dockerfile потов в ручную создавать а в конпозере организовать всё это в docker network
Konstantin
Встретился с проблемой как секреты распределять разные по всем, чтобы не видно было в скриптах докера или композера
Konstantin
или делать через ключи
Konstantin
если через ключи в душе не имею в какую сторону смотреть
Je
Довер-вей - по процессу на контейнер, так что да, будет 3 образа и 3 докер-файла
Сразу docker-compose с одной сеткой, это лучше и удобней, чем запускать независимо, плюс сразу начинаешь использовать резолвер (контейнер доступен по простому читаемому имени)
Секреты для начала можно таскать через ENV, но если хочется сугубо прода - смотреть в consul, vault etc
Je
А, ну собственно какой-нибудь монги и эластика может хватить ванильных с докерхаба, просто конфиг подмонтируй и volume
Konstantin
у меня редис и монга на одтельных машинах
Je
Захочешь кластер - допишешь десять строчек в docker-comopse и да будет swarm, ща должны повылазить хейтеры и начать предлагать таблетки k8s
-=LevT=-
Можно ли/как получить доступ к содержимому Dockerfile образа взятого на стороне?
-=LevT=-
конкретно надо загрепать VOLUME
(чтобы не лазить вручную смотреть через браузер hub.docker.com -> github.com/docker-library
Je
ну как автоматически-то, каждое приложение чото пишет в свою директорию, это в докере никак не трогают, нужно заглянуть в доки образа и глянуть, куда он собирается писать базу скажем - mysql в /var/lib/mysql, postgre в /var/lib/postgresql/data
-=LevT=-
блин... под виндою вот что вижу
>docker volume ls
local 9bf6efd7184badc10914d3572d9e5cef535c3ba5bb457f80e4d7b2eec57380d1
local a1b1f0cf5c386ab1951d9c74c45e28be48c7e705e65aa1e20302915d7d32f974
local fc7f071a2b8163f6eaed6d6e22251f47eca5d5fb914277a8c715a606ece8681f
local myvol
(последний только что создал руками)
Есть и C:\ProgramData\Docker\volumes где это добро лежит
Остаётся понять, почему lcow контейнеры обламываются туда писать
Konstantin
Danila
Je
Довер-вей? Это что значит конкретно?
>Each container should have only one concern
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#avoid-installing-unnecessary-packages
-=LevT=-
-=LevT=-
Кажись, понял: docker image inspect —format нечто
Je
Kota
Доброй ночи, товарищи
Сабж. На домашнем сервере-шлюзе стоит докер с контейнерами (сайты, базы данных), домены направлены на статический ipv4. Настроил на домашнем сервере-шлюзе получение ipv6, и раздачу его в локалку. Что бы на компе он работал. В итоге сервер становится недоступен по ipv4. И сайты не открываюся. Подскажите как рещить данную проблему?
Je
не, нету, что можно кинуть, сорри
Konstantin
Sergey
Anton
Ребята, такой кейс. На хостовой машине есть mysql lxc контейнер. Я хочу поднять докер контейнер с мускулем и из него мигрировать базы в докер. Реально ли из докер контейнера достучаться до хоста чтобы сделать mysqldump?
Anonymous
Anton
Anton
мне надо как то мигрировать из lxc mysql => docker mysql
Anton
все базы
Anonymous
Anton
Anton
как то папки вроде можно шарить
Anton
но подумал я могу по айпи или хосту к мускулю в lxc подключиться и сдампить
Ruslan
Привет всем, как мне крон настроить?
Сейчас на самой машине в crontab пишу
* * * * * docker-compose -f /var/www/site/docker-compose.yml exec -T php php /src/yii cron >/var/log/somelogfile.log 2>&1
но в логе пишет
/bin/sh: 1: docker-compose: not found
Ilya
Which docker-compose
Kota
Юрий
Народ, а можно сделать чтобы контейнер слушал порт, но при этом не пробрасывать его наружу. Т.е. в докерфайле нет expose
Alex