
George
27.02.2019
15:23:54
ENTRYPOINT & CMD определяют команду, которая выполнится при запуске контейнера

Google

Pavel
27.02.2019
15:25:04
да-да, уже нашел, что это некомильфо

Alexander
27.02.2019
15:25:17

Pavel
27.02.2019
15:25:47
да, уже выяснил, что не рекомендуется

George
27.02.2019
15:26:07
.env - это обычно про докер-компоуз. Очевидно, что у тебя переменные окружения должны задаваться снаружи. В рантайме. Если есть фиксированные окружения, то можешь внутри контейнера определить два массива переменных для двух сред, а при запуска контейнера, например, передавать ключ -e ENV=PROD для выбора окружения

Alexander
27.02.2019
15:28:37
да, уже выяснил, что не рекомендуется
Ну тут идеологический момент. Определять как будет работать приложение ты должен при деплое. А уж как реализовано - это твое дело, вон выше решение вполне себе норм, имхо

Viktor
27.02.2019
15:31:04

George
27.02.2019
15:31:20

Viktor
27.02.2019
15:31:25
?

George
27.02.2019
15:31:39
Идеально - описать оба: и ENTRYPOINT, и CMD

Siergiej
27.02.2019
15:32:00
Ребята можно ли запустить контейнер с инстансом приложения и запустить другой контейнер в котором будут тесты, которые будут пинговать контейнер с инстансом приложения, это реально?

webfather
27.02.2019
15:32:02
я так сделал:
CMD ["pm2-runtime", "/home/docker/monitoring.yml"]
а там уже прописаны все команды которые выполняются и благо все работает )

Viktor
27.02.2019
15:32:16

George
27.02.2019
15:32:24

Google

George
27.02.2019
15:32:39
Обычно энтрипойнт - это базовый путь к бинарнику, а cmd - например, параметры
Т.е. то, что потребитель докер-образа может менять

Siergiej
27.02.2019
15:33:41
Кратко - да
сейчас я получаю connection refused ошибку, контейнеры поднимаю с помощью docker-compose, для всех сервисов у меня есть общий нетворк(bridge)

George
27.02.2019
15:33:42
По умолчанию вроде entrypoint == /bin/sh или тянется из родительского образа

Viktor
27.02.2019
15:33:43
может я мало гитхабовских dockerfile'ов видел, но субъективно, entrypoint редко используют

George
27.02.2019
15:33:52
nginx & postgres посмотри
Просто лучше переопределить - явное лучше неявного

Siergiej
27.02.2019
15:35:26

George
27.02.2019
15:35:36

Siergiej
27.02.2019
15:35:41

George
27.02.2019
15:35:57
Разные сети, значит
Нужно создавать сеть вне докер-компоуза, а в нем определять ее как external

Viktor
27.02.2019
15:36:32

George
27.02.2019
15:36:32
Либо тесты и прод в одном файле определить, но запускать по отдельности

Siergiej
27.02.2019
15:37:14

George
27.02.2019
15:37:24
Запускаешь как ?
Полностью компоузом покажи

Google

George
27.02.2019
15:37:45
И строчку коннекта сервисов друг к другу

Siergiej
27.02.2019
15:37:45

George
27.02.2019
15:37:54

Linus
27.02.2019
15:38:04

George
27.02.2019
15:38:04

Iurii
27.02.2019
15:38:41
ммммм

Siergiej
27.02.2019
15:38:52

Viktor
27.02.2019
15:38:55
Плохой пример
официальный репозиторий, вторая ссылка гугла. в первой такой же цмд без энтрипоинта

George
27.02.2019
15:39:00
Официальней некуда
На телефоне развалилось

Siergiej
27.02.2019
15:40:26
ща я загружу по-человечески 2 мин

George
27.02.2019
15:41:41

Siergiej
27.02.2019
15:42:16

George
27.02.2019
15:43:40
Явно не вижу проблемы
Обратил бы внимание только на то, что при такой линковке сервисов им на expose и ports пофиг
Они все равно друг друга видят

Viktor
27.02.2019
15:44:35

George
27.02.2019
15:44:51

Google

George
27.02.2019
15:45:09
Т.е. именно entrypoint == бинарь, а cmd == параметры ?
Ну, я сплошь и рядом так делаю

Siergiej
27.02.2019
15:45:50
По виду должно работать
а есть смысл нетворк обьявлять так как я это делаю, разве докер-композ по дефолту не в одном нетворке все контейнере запускает?

George
27.02.2019
15:46:06
Но лучше объявить
В моем кейсе приходилось докер сетям отдельные адреса назначать... Как бы явное лучше неявного

foi
27.02.2019
15:47:12
Хотелось бы узнать насчет 2,3,4?

Siergiej
27.02.2019
15:47:15
По дефолту - да
мои тесты пингуют инстанс прода с помощью супертеста, может в нем беда?

George
27.02.2019
15:48:57
Это с мейлру митапа по Кубу ?

Linus
27.02.2019
15:49:32

George
27.02.2019
15:49:56
У меня есть ответ на любой

Viktor
27.02.2019
15:50:30

George
27.02.2019
15:50:59
Да все банально. да, обсуждали

Siergiej
27.02.2019
15:51:13
М.б.
и кстати в тестах, я обращаюсь к инстансу по localhost, или он и доступен по локалхосту? Что скажешь?

George
27.02.2019
15:51:34
Надо по хостнейму, т.е. dynamodb

Siergiej
27.02.2019
15:52:25
Это ошибка
пробывал по хостнейму, вываливается такая ошибка, хотя на 4001 порту висит сервак

Google

George
27.02.2019
15:53:07
У тебя апи мог не стартануть
Или стартануть, но отвалиться
Используй докер крмпоуз формата 2.7, расставь хелсчеки и используй depends_on healthy

Siergiej
27.02.2019
15:54:04
У тебя апи мог не стартануть
дело в том что я пробовал запускать контейнер с апи, он висит все ок, потом заходил внутрь тестового контейнера и запускал тесты
хорошо, попробую

Iurii
27.02.2019
17:04:44
@vizdrag


Pavel
27.02.2019
17:05:09
подскажите, есть Node.js-приложение. для успешного старта приложения мне нужно иметь в окружении особую переменную, что-то вроде NODE_ENV=dev. локально у меня сборка идет через docker compose и все проходит хорошо, код видит переменную в .env и приложение стартует как надо
на площадке я хочу все деплоить через ansible, сценарий в плейбуке такой
- name: Run App container
docker_container:
name: api
image: {{ image_name }}
state: started
volumes:
- /var/www/.env:/app/.env:ro
ports:
- "8000:8000"
etc_hosts:
"postgres": "{{ ansible_host }}"
env_file: /var/www/.env
env:
"MACHINE_HOST": "{{ ansible_host }}"
command: >
/bin/bash -c "
sleep 5;
npm start;
"
Как правильно прокинуть .env внутрь?
volumes:
- /var/www/.env:/app/.env:ro
не помогает, приложение стартует, .env-файл виден внутри контейнера, но у меня не появляются таблицы в БД, их создание и привязано на эту переменную
добавил к сценарию env_file: /var/www/.env тоже не помогло
ЧЯДНТ?

George
27.02.2019
17:09:47


Pavel
27.02.2019
17:11:15
в каком смысле?

1
27.02.2019
17:13:30
в каком смысле?
хм, кажись дотенв не сетит значение из файла если у тебя уже есть такая енв переменная
тоесть докером ты можешь заоверрайдить те переменные
и не двигать файлы туда сюда
возможно я не прав :)
но вот причем енв к таблицам я не понял

Pavel
27.02.2019
17:14:30
нет, такой переменной нет
создание таблиц в БД завязано на наличие переменной
но это неважно сейчас
есть сам факт того, что переменная недоступна, судя по всему

George
27.02.2019
17:20:22