@docker_ru
Docker — русскоговорящее сообщество

Обсуждаем вопросы, посвященные Docker🐳, Docker Swarm и всей экосистеме. Обмениваем идеями, новостями и решаем пробемы. Вам могут быть полезны: @coreos_ru, @kubernetes_ru, @devops_ru, @rkt_ru Рекомендуем сразу отключить уведомления для удобства

2608 members

Архив канала @docker_ru 14 ноября 2016 г.

01:06:49 ПП
User 89706347
как в докерфайле одного контейнера вызвать команду из другого контейнера? (линк есть и вольюм прокинул)
01:08:32 ПП
01:08:38 ПП
User 118473437
возможно
01:10:25 ПП
User 89706347
других вариантов нет? просто логически хотелось бы разделить контейнер с пхп и самим приложением, но чем дальше вглубь, тем больше дров
01:12:55 ПП
User 54466621
зачем разделять?
01:13:57 ПП
User 54466621
приложение может само работать без php?
01:14:41 ПП
User 89706347
нет, оно не может работать без всего, что перечислено в докер-компоуз, но это же не говорит о том, что мне нужно делать один большой-большой билд?)
01:15:46 ПП
User 118473437
вопрос в том, для чего разделять пхп и приложение?
01:16:34 ПП
User 54466621
приложение вообще подключается через volume и все
01:16:56 ПП
01:17:11 ПП
User 89706347
в нем фрейморк, и надо бы выполнять парочку-другую комманд
01:17:32 ПП
User 89706347
из серии сбросить кэш, и поставить вендоры, если их нет
01:17:55 ПП
User 89706347
те же миграции выполнить
01:18:06 ПП
User 54466621
ну сделай скрипт, который будет все это делать при запуске
01:18:26 ПП
User 89706347
делаю, докерфайл)
01:18:39 ПП
User 118473437
подрубаешь приложение через волум, стартуешь контейнер с пхп, он выполнив задачу (sh скрипт) завершает работу
01:19:10 ПП
User 89706347
а почему не в докерфайле это делать?
01:19:18 ПП
User 118473437
через compose выставляешь приоритеты
01:19:32 ПП
User 118473437
что когда и зачем стартовать
01:22:11 ПП
User 54466621
можешь запускать тот же скрипт в отдельном контейнере, который как закончит все дела удалится
01:22:32 ПП
User 118473437
именно
01:46:21 ПП
User 89706347
но тогда в этом скрипте все равно придется по ссш коннектиться к пхп контейнеру, верно?
01:49:32 ПП
User 118473437
имеем 2 контейнера. 1 - крутит приложение, 2 - скрипт который выполняет то что тебе нужно (php, сброс кэша). К 1 и 2му контейнеру с помощью volume подключаем папочку с приложением. На выходе имеем доступ к приложению у обоих контейнеров.
01:52:40 ПП
User 118473437
По такому принципу у меня bareos работает, 4 контейнера имеет доступ к папке с конфигами (с :ro (read only)) Сначала стартует director (sh скрипт) который проверяет доступ к контейнеру с базой данных, ждет пару секунд, затем проверяет наличие базы данных и если ее нет то создает базу, юзера, если есть - пропускает шаг создания и запускает director
02:01:34 ПП
User 89706347
первый контейнер с пхп, второй контейнер - скрипт, и из второго контейнера мне нужно дергать первый, ибо нужно пхп и там и там
02:03:50 ПП
User 54466621
ну так запусти оба контейнера с php
02:52:45 ПП
User 163248555
Докер это вам не виртуалка, чтоб коннектится и дергать
02:53:11 ПП
User 163248555
Вот вам вообще он зачем в вашей задачи ? модно ?
02:55:03 ПП
User 163248555
Я когда думаю про докер и что с ним делать представляю контейнеры иммутабельными, т.е собрал запустил и ничего менять внутри не надо, а если надо то пересобрал и запустил
02:55:11 ПП
User 89706347
можно, имеется 6 разработчиков и пять проектов с разным окружением, сейчас сидим на вагранте, но это очень неудобно, и к тому же отбирает немало места, так же с докером процесс деплоя будет проходить без непритных неожиданностей (или, хотя бы, с меньшим их количеством)
02:55:12 ПП
User 2339730
User 163248555
Докер это вам не виртуалка, чтоб коннектится и дергать
с одной стороны да, с другой стороны сами докеровцы говорят, что хотят со временем заменить функционал предоставляемый так скажем классическими виртуалками своими контейнерами
02:56:29 ПП
User 89706347
ок, нужно выполнять миграции, желательно не лазя каждый раз внутрь контейнера, и не прописыать их руками
02:56:33 ПП
User 89706347
как это сделать?
02:56:44 ПП
User 89706347
нужна и бд, и приложение с пхп
02:56:59 ПП
User 89706347
без "дерганий и коннектов"
02:57:00 ПП
User 77550740
entrypoint.sh
github.com/docker-library/wordpress/blob/3a1ca61731e6070764d5b7235e3b6617798b8af8/php5.6/apache/docker-entrypoint.sh
wordpress - Docker Official Image packaging for WordPress
02:57:08 ПП
User 77550740
entrypoint
02:57:43 ПП
User 89706347
создал, он пишет, что запускает его, но на деле он ничего не выполнил) а второй раз пишет что берет результат из кэша)
02:58:03 ПП
User 77550740
какой такой кэш?
02:58:12 ПП
User 89706347
специально там сделал ошибку - никакой инфы об этом не вывело
02:58:25 ПП
User 77550740
пишешь обычный скрипт который будет запускать сначала миграции а потом приложение
02:58:32 ПП
User 77550740
и делаешь его своей входной точкой в контейнер
02:58:33 ПП
User 89706347
Step 4 : COPY entrypoint.sh /tmp/entrypoint.sh
 —-> Using cache
 —-> b066296d9691
Step 5 : RUN chmod +x /tmp/entrypoint.sh
 —-> Using cache
 —-> 738cde770555
02:58:42 ПП
02:58:50 ПП
User 89706347
он не выполнился
02:58:57 ПП
User 77550740
и не понятно почему /tmp?
02:59:11 ПП
User 77550740
User 89706347
он не выполнился
Что значит не выполнился?
02:59:19 ПП
User 77550740
Он у тебя при каждом старте приложения будет запускаться
02:59:26 ПП
User 77550740
при сборке контейнера миграции не прогоняют
02:59:26 ПП
User 89706347
то и значит - захожу  приложение, и кэш на месте
02:59:35 ПП
User 77550740
какой такой кэш?
02:59:51 ПП
User 89706347
кэш приложения, который чистится в ентрипоинте
03:00:01 ПП
03:00:12 ПП
User 89706347
это троллинг?
03:00:22 ПП
User 77550740
Помоему ты меня троллишь.
03:00:30 ПП
User 89706347
это ты меня троллиь
03:00:33 ПП
03:00:36 ПП
User 77550740
У тебя есть какой то sh скрипт который является входной точкой в твой контейнер
03:00:41 ПП
User 77550740
что тебе в этой концепции неясно?
03:01:21 ПП
User 89706347
третий раз, он не ывполняется
03:01:31 ПП
User 77550740
Что значит не выполняется?
03:01:34 ПП
User 77550740
он приложение запускает?
03:01:37 ПП
User 89706347
то и значит
03:01:39 ПП
03:01:53 ПП
User 77550740
echo в скрипте сделай и убедись что он запускается
03:01:54 ПП
User 89706347
#!/usr/bin/env sh


echo "Prepare app"

cd /var/www/symfony

composer install  --ignore-platform-reqs --optimize-autoloader
bin/console cache:clear
bin/console cache:clear --env=prod
bin/console doctrine:migration:migrate -n

echo "Done"
03:01:56 ПП
User 77550740
Dockerfile покажи
03:02:03 ПП
03:02:07 ПП
User 77550740
Где тут запуск приложения?
03:03:28 ПП
User 77550740
сто раз написал что точка входа что то делает потом сама через exec запускает приложение
03:04:00 ПП
User 89706347
FROM php:7.0.12-fpm-alpine

#composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
RUN apk --update add wget curl git  && rm /var/cache/apk/*

COPY entrypoint.sh /tmp/entrypoint.sh
RUN chmod +x /tmp/entrypoint.sh

CMD ["/tmp/entrypoint.sh"]
03:04:15 ПП
User 77550740
почему tmp?
03:04:25 ПП
User 89706347
да не важно, куда он копируется
03:04:29 ПП
User 89706347
взял из примера
03:04:32 ПП
User 77550740
ну так то хрен знает
03:04:42 ПП
User 77550740
такого пути может и не быть например.
03:05:52 ПП
User 77550740
я так и не увидел где у тебя в скрипте запускается приложение. Но не суть. Как докер запускаешь?
03:09:44 ПП
User 89706347
docker-compose build
docker-compose up
03:10:01 ПП
User 77550740
какой вывод после up?
03:18:09 ПП
User 35992469
Народ, а как в compose прописать sysctl параметры?
03:18:28 ПП
User 77550740
например?
03:19:16 ПП
User 35992469
somaxconn
03:21:07 ПП
User 77550740
Я думаю через docker-compose/docker-machine это не проставишь
03:21:16 ПП
User 77550740
Это вроде настройка хоста, ядра.
03:21:56 ПП
User 35992469
отстойно, хотя через docker run можно настройками ядра рулить
03:22:19 ПП
User 77550740
Если через docker можно то в docker-compose наверняка аналогичная опция должна быть.
03:22:42 ПП
User 35992469
пока чет не нашел (
03:25:53 ПП
User 35992469
https://github.com/docker/compose/issues/3765
github.com/docker/compose/issues/3765
PR docker/docker#19265 merged 'sysctl' support into docker, but there seems to be no way to use this feature with docker-compose. Has anyone started work on such a feature? If not, I will attempt t...
03:52:57 ПП
User 177558402
User 1993645
Нужно пробросить ssh ключ внутрь контейнера. В этом примере приватный ключ хранится в переменной SSH_PRIVATE_KEY:
eval $(ssh-agent -s)
ssh-add <(echo "$SSH_PRIVATE_KEY")
https://gitlab.com/help/ci/ssh_keys/README.md
gitlab.com/help/ci/ssh_keys/README.md
пробросить в созданные контенер смог, 
теперь возникла проблема с пробросом во время build 
с пробросом ключей в варианте docker run через консоль или docker-compose разобрался
А как решить проблемы с docker build ?
Нужно чтоб RUN bundle install с ходил по ssh к гит репоизатрию .
03:53:51 ПП
User 77550740
User 177558402
пробросить в созданные контенер смог, 
теперь возникла проблема с пробросом во время build 
с пробросом ключей в варианте docker run через консоль или docker-compose разобрался
А как решить проблемы с docker build ?
Нужно чтоб RUN bundle install с ходил по ssh к гит репоизатрию .
Делаешь в репозитории ssh read only key и кидаешь его файлом в контейнер
03:54:04 ПП
User 77550740
вчера так собирал образ
03:58:03 ПП
User 77550740
следующий твой затык решается так в Dockerfile:
RUN ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts