
Artem
13.02.2018
18:58:55

Vadim
13.02.2018
19:01:35
Запускаю nginx как compose-сервис
Передаю в него конфиги
Может проблема в том, что не указываю какие-то дополнительные параметры
Если он не причем - это здорово сужает область проблемы ?

Vladislav
13.02.2018
19:31:33
Всем привет! Я недавно познакомился с докером и у меня возник вопрос - как заставить его подняться самому после ошибки? Использую docker-compose v3
текущий конфиг (его часть) выглядит так:

Google

Vladislav
13.02.2018
19:33:00
P.S. проблема в том, что в момент, когда поднимается сервер, он не может подключиться к БД т.к. в это время она только собирается

twwlf
13.02.2018
19:48:21
ну и плюс у тебя должен завершаться процесс при проблемах с соединением к бд

Vladislav
13.02.2018
19:49:12
это не решение проблемы. Данная команда следит за стартом, а не за завершением сборки

twwlf
13.02.2018
19:49:29
это правда

Vladislav
13.02.2018
19:51:43
в официальной доке указано, что depends_on не ждет момента, когда контейнер будет "готов", а запускает зависимый сразу после инициализации первого
и да, я это указал и проблема только при первом запуске, когда база данных еще не собрана, но это же ужасно - вручную пересобирать

Vlad
14.02.2018
04:09:25

Denis
14.02.2018
05:08:28
Можете подсказать, как поменять файл внутри контейнера, скачанный с другого репозитория?
Вот, если точнее

Artem
14.02.2018
05:15:46
Заходим и меняем через sed, потом коммитим контейнер, если надо.

Google

Николай
14.02.2018
05:31:37


Vladislav
14.02.2018
05:38:10
Вначале ты говоришь, что из-за ошибки не рестартится, теперь ты говоришь, что это не ошибка. Сделай у себя в коде отсутствие соединения с базой как ошибку. Тогда контейнер автоматически перезапустится. И напиши, как тебе посоветовали, depends_on. Тогда твой контейнер не стартанет, пока не запустится контейнер с базой.
1) я говорил, что рестарт, в случае ошибки, просто не происходит, из-за чего я не могу понять что я делаю не так. Просто идет его игнорирование.
2) depends_on не помогает. при создании контейнера база НЕ успевает подняться, из-за чего происходит падение. При последующих запусках работает так, как надо.
Я приложил ссылку с полным конфигом данного сервиса
https://pastebin.com/hhzEu4xY

Andrey
14.02.2018
05:38:32
Хелсчек запили
Решит многие проблемы :)

Vladislav
14.02.2018
05:40:06
ок, сейчас попробую)

Николай
14.02.2018
05:52:20
Народ, подскажите плиз.
Кейс такой: для прода собираю контейнер, в нем присобачиваю текущий каталог в контейнер ADD ["./", "/var/www/app/"], потом аккурат перед entrypoint выполняю свой init.sh где в прилагу устанавливаются зависимости и происходит миграция, далее все стартует норм.
Для девелопмента же надо каталог проекта монтировать в контейнер, для моментальных изменений. Я это делаю так: в докерфайле ничего не меняю, каталог так же добавляется, но в docker-compose я поверх монтирую каталог
volumes:
- "./qr-sender/:/var/www/app"
но дело в том что монтирование происходит уже после отработки докерфайла где устанавливаются зависимости, и от этого все плохо(((
Как этот момент вы у себя обрабатываете?
Есть конечно мысля написать в композе command с нужным набором команд, но мне кажется это дико не удобно и не правильно

Artem
14.02.2018
06:02:51
Добавь свой init в энтрипойнт
И передавай ему какой нибудь энвайромент для отработки
Типо init=1 для его запуска

Николай
14.02.2018
06:05:13

Artem
14.02.2018
06:05:30
Да

Николай
14.02.2018
06:05:49
спс, щас попробую..

Artem
14.02.2018
06:08:29
В скрипте энтрипойнта читаешь переменную init перед запуском основного процесса если она задана, то выполняешь нужные манипуляции

Николай
14.02.2018
06:14:56

Grishq
14.02.2018
06:43:23
коллеги, всем доброго дня!

Николай
14.02.2018
06:43:54

Grishq
14.02.2018
06:44:27
такая проблема (не уверен, проблема ли, баг или фича):
в общем создаём к примеру каталог /docker, метку селинукс не прописываем. права оставляем по дефолту. разве селинукс должен разрешить запись данных из контейнера в этот каталог в таком случае?
а, монтируем каталог в контейнер перед запуском, разумеется: -v /docker:/var/lib/mysql
потому что летом и в версии 16.03-16.09 это точно не работало

Google

Grishq
14.02.2018
07:38:07
вопрос снят
в связи с тем, что на сайте заявлена поддержка selinux только для EE версии

Ilivg
14.02.2018
09:02:23
Приветствую постояльцев! ?
Подскажите, плз, как можно вывести список версий контейнера (или как там правильно)? Ведь можно указать ubuntu:14.04, если надо именно такой, а не latest. А вот сам список как увидеть?

Artem
14.02.2018
09:04:25
docker ps и там где IMAGE написан же тег
или ты вообще про то какие доступны?

Ilivg
14.02.2018
09:05:04

Алексей
14.02.2018
09:05:10
docker hub

Artem
14.02.2018
09:05:14
Заходишь в докерхаб и смотришь какие теги доступны

Ilivg
14.02.2018
09:06:30
Понятно. Думал, что есть что-то аналогичное центовскому
yum list —showduplicates
Спасибо

Nklya
14.02.2018
09:08:16
У меня такой алиас прибит для получения списка тегов
gettags(){
curl -s https://registry.hub.docker.com/v1/repositories/$1/tags|jq .
}

Ilivg
14.02.2018
09:22:38

Николай
14.02.2018
09:26:31

Andrey
14.02.2018
10:33:07
Ребят, всем привет.
Скажите, а как по канонам докера собирать php сайтики?
По сути какие есть компоненты:
1) PHP код бека
2) html/css/js и вот это вот всё для фронта
3) php-fpm
4) nginx
5) База
Исходя из логики 1 процесс 1 контейнер, мне надо:
1) Volume для кода
2) Контейнер с php-fpm
3) Контейнер с nginx
4) Контейнер с базой
И вроде как все логично, но не редко вижу когда php суют вместе с кодом в один контейнер. А иногда еще и базу к ним селят. Хотелось бы мнения послушать.

Oleg
14.02.2018
10:37:33
Один процесс на контейнер. Маунтишь вольюмы с базой и кодом отдельно. Остальное можно в контейнерах хранить.

Ilivg
14.02.2018
10:38:51
А насколько рекомендовано деление "Один процесс - один контейнер"?
У меня nginx (frontend) и toncat (backend) - я подумывал объединить.
Мне кажется, что вполне можно объединять, чтобы не плодить сущности, по некоторым признакам.

Twelfth
14.02.2018
10:40:05
Лучше держать в отдельных контейнерах

Aion
14.02.2018
10:40:25

Google

Aion
14.02.2018
10:42:14
первая - jdk
вторая - tomcat, наследующий jdk
третья - nginx
а если у тебя из этого состоит сервис, то ты формируешь один docker-compose файл в котором описываешь как эти кусочки становятся одной сущностью - сервисом

Ilivg
14.02.2018
10:45:27
а чтобы обновить отдельную часть ты будешь обновлять сразу 2е сущности?
Сейчас (я только изучаю докер) у меня штатные образы и nginx и tomcat, а все конфиги и проложуха подключены через волумы. Запускается всё через единый docker-compose.yaml.
Они в связке, так что одновление одного выведет временно из работы другой компонент, и весь сервис в целом. Так какая разница, что одновлять, если временно будут недоступны оба?

Admin
ERROR: S client not available

Ilivg
14.02.2018
10:45:53
Я пока оцениваю. Ну и стараюсь понять. ?

Aion
14.02.2018
10:46:05
так сразу с малого работаете так как требуется

Ilivg
14.02.2018
10:46:09
Идею понял. В принципе она мне даже ближе.

Aion
14.02.2018
10:46:16
чтобы потом в продакшене у вас такого не произошло

Ilivg
14.02.2018
10:51:56
первая - jdk
А зачем отдельно ждк? Да и как, если томкат ставится сразу с ним.
Если не ошибаюсь.

Aion
14.02.2018
10:53:29
собираешь образ с jdk
потом уже томпкат указав FROM jdk
потому что инструкция к установке jdk может поменяться
как и вресия jdk

Oleg ?
14.02.2018
10:54:46
Ребят, я правильно понимаю что nginx-proxy не поодерживает разные location?

Aion
14.02.2018
10:54:47
и это не должно ни каким образом аффектить на сборку образа tomcat

Andrey
14.02.2018
10:55:28
А как быть с исходниками которые нужно еще собирать? Ну типо фронта на JS или бекенда которому нужен для сборки composer?

Google

Aion
14.02.2018
10:55:28
темболее jdk у вас может использоваться для других проектов
один собирает артефакт
второй его использует
после сборки контейнер сносится

Andrey
14.02.2018
10:57:56

Aion
14.02.2018
10:58:09
нет
копируешь исходники в инструкции докерфайла
собираешь
описываешь второй контейнер и пишешь в нем, чтобы он забрал каталог с артефактом из контейнера описанного ранее

Andrey
14.02.2018
11:00:00

Aion
14.02.2018
11:00:54
вы пропустили тот факт что я говорю о работе с одним докерфайлом
FROM nodejs:8 AS build_env
COPY ./ui /home/frontend
WORKDIR /home/frontend
#RUN yarn && yarn run build:dcb
RUN yarn && yarn run build
CMD ["bash", "-c", "yarn run server"]
FROM nginx:latest
ENV version 0.0.1
# Copy art from build-env
RUN mkdir /var/www/dist
WORKDIR /var/www/dist
COPY --from=build_env /home/frontend/dist .
COPY frontend.conf /etc/nginx/sites-enabled
CMD ["nginx", "-g", "daemon off;"]

Andrey
14.02.2018
11:04:07

Aion
14.02.2018
11:04:25
нет
вам надо работать с артифактами в рамках вашей CI системы
задача 1) Собрать артифакт
задача 2) протестировать артифакт