@docker_ru

Страница 1076 из 1375
Google
Pavel
27.02.2019
15:25:04
да-да, уже нашел, что это некомильфо

Alexander
27.02.2019
15:25:17
всем привет. подскажите, .env при сборке имейджа зашивать внутрь него по феншую или он должен монтироваться извне в контейнер, где будет крутиться имейдж?
по феншую один образ, разные переменные. Так что по идее надо при деплое передавать ) но это на вкус и цвет конечно

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: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
Идеально - описать оба: и ENTRYPOINT, и CMD
Я честно говоря не разобрался, чем entrypoint + cmd удобнее просто cmd

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
Бридж? Или они оба в одной сети докер-комплуза ?
я определил для них общую сеть в виде моста

Siergiej
27.02.2019
15:35:41
George
27.02.2019
15:35:57
Разные сети, значит

Нужно создавать сеть вне докер-компоуза, а в нем определять ее как external

Viktor
27.02.2019
15:36:32
nginx & postgres посмотри
нуу, https://github.com/nginxinc/docker-nginx/blob/master/mainline/stretch/Dockerfile

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
Запускаешь как ?
compose file скинуть?

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
Сюда, да
docker-compose up

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

George
27.02.2019
15:39:00
нуу, https://github.com/nginxinc/docker-nginx/blob/master/mainline/stretch/Dockerfile
https://github.com/docker-library/postgres/blob/master/11/Dockerfile

Официальней некуда

На телефоне развалилось

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

George
27.02.2019
15:41:41
Siergiej
27.02.2019
15:42:16
На телефоне развалилось
https://gist.github.com/SergeyVatz/4a9093f04f132228c76753790df3dc21

George
27.02.2019
15:43:40
Явно не вижу проблемы

Обратил бы внимание только на то, что при такой линковке сервисов им на expose и ports пофиг

Они все равно друг друга видят

Viktor
27.02.2019
15:44:35
https://github.com/docker-library/postgres/blob/master/11/Dockerfile
exec "$@" как раз имхо неудачный пример. В итоге мы получаем точно такой же bash -c 'postgres', как и в случае с CMD? А есть кейсы с энтрипоинтом, но без entrypoint.sh, который оканчивается строкой exec "$@"?

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:49:56
У меня есть ответ на любой

Viktor
27.02.2019
15:50:30
Хотелось бы узнать насчет 2,3,4?
сегодня выше 2,3 пытались обсуждать

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

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

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 тоже не помогло ЧЯДНТ?

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

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

тоесть докером ты можешь заоверрайдить те переменные

и не двигать файлы туда сюда

возможно я не прав :)

но вот причем енв к таблицам я не понял

Pavel
27.02.2019
17:14:30
нет, такой переменной нет

создание таблиц в БД завязано на наличие переменной

но это неважно сейчас

есть сам факт того, что переменная недоступна, судя по всему

Страница 1076 из 1375