Viktor
?
George
Идеально - описать оба: и ENTRYPOINT, и CMD
Serhii
Ребята можно ли запустить контейнер с инстансом приложения и запустить другой контейнер в котором будут тесты, которые будут пинговать контейнер с инстансом приложения, это реально?
Sergey
я так сделал: CMD ["pm2-runtime", "/home/docker/monitoring.yml"] а там уже прописаны все команды которые выполняются и благо все работает )
Viktor
Идеально - описать оба: и ENTRYPOINT, и CMD
Я честно говоря не разобрался, чем entrypoint + cmd удобнее просто cmd
George
Обычно энтрипойнт - это базовый путь к бинарнику, а cmd - например, параметры
George
Т.е. то, что потребитель докер-образа может менять
Serhii
Кратко - да
сейчас я получаю connection refused ошибку, контейнеры поднимаю с помощью docker-compose, для всех сервисов у меня есть общий нетворк(bridge)
George
По умолчанию вроде entrypoint == /bin/sh или тянется из родительского образа
Viktor
может я мало гитхабовских dockerfile'ов видел, но субъективно, entrypoint редко используют
George
nginx & postgres посмотри
George
Просто лучше переопределить - явное лучше неявного
Serhii
Бридж? Или они оба в одной сети докер-комплуза ?
я определил для них общую сеть в виде моста
George
Разные сети, значит
George
Нужно создавать сеть вне докер-компоуза, а в нем определять ее как external
Viktor
nginx & postgres посмотри
нуу, https://github.com/nginxinc/docker-nginx/blob/master/mainline/stretch/Dockerfile
George
Либо тесты и прод в одном файле определить, но запускать по отдельности
Serhii
Либо тесты и прод в одном файле определить, но запускать по отдельности
так у меня тесты и прод в одно докер композ файле
George
Запускаешь как ?
George
Полностью компоузом покажи
George
И строчку коннекта сервисов друг к другу
Serhii
Запускаешь как ?
compose file скинуть?
Ilia
Jürgen
ммммм
Serhii
Сюда, да
docker-compose up
Viktor
Плохой пример
официальный репозиторий, вторая ссылка гугла. в первой такой же цмд без энтрипоинта
George
нуу, https://github.com/nginxinc/docker-nginx/blob/master/mainline/stretch/Dockerfile
https://github.com/docker-library/postgres/blob/master/11/Dockerfile
George
Официальней некуда
George
На телефоне развалилось
Serhii
ща я загружу по-человечески 2 мин
Serhii
На телефоне развалилось
https://gist.github.com/SergeyVatz/4a9093f04f132228c76753790df3dc21
George
George
Явно не вижу проблемы
George
Обратил бы внимание только на то, что при такой линковке сервисов им на expose и ports пофиг
George
Они все равно друг друга видят
Viktor
https://github.com/docker-library/postgres/blob/master/11/Dockerfile
exec "$@" как раз имхо неудачный пример. В итоге мы получаем точно такой же bash -c 'postgres', как и в случае с CMD? А есть кейсы с энтрипоинтом, но без entrypoint.sh, который оканчивается строкой exec "$@"?
George
Т.е. именно entrypoint == бинарь, а cmd == параметры ?
George
Ну, я сплошь и рядом так делаю
Serhii
По виду должно работать
а есть смысл нетворк обьявлять так как я это делаю, разве докер-композ по дефолту не в одном нетворке все контейнере запускает?
George
Но лучше объявить
George
В моем кейсе приходилось докер сетям отдельные адреса назначать... Как бы явное лучше неявного
Anonymous
Хотелось бы узнать насчет 2,3,4?
Serhii
По дефолту - да
мои тесты пингуют инстанс прода с помощью супертеста, может в нем беда?
George
Это с мейлру митапа по Кубу ?
George
У меня есть ответ на любой
Viktor
Хотелось бы узнать насчет 2,3,4?
сегодня выше 2,3 пытались обсуждать
George
Да все банально. да, обсуждали
Serhii
М.б.
и кстати в тестах, я обращаюсь к инстансу по localhost, или он и доступен по локалхосту? Что скажешь?
George
Надо по хостнейму, т.е. dynamodb
Serhii
Это ошибка
пробывал по хостнейму, вываливается такая ошибка, хотя на 4001 порту висит сервак
George
У тебя апи мог не стартануть
George
Или стартануть, но отвалиться
George
Используй докер крмпоуз формата 2.7, расставь хелсчеки и используй depends_on healthy
Serhii
У тебя апи мог не стартануть
дело в том что я пробовал запускать контейнер с апи, он висит все ок, потом заходил внутрь тестового контейнера и запускал тесты
Serhii
хорошо, попробую
Jürgen
@vizdrag
Pavel
подскажите, есть 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
в каком смысле?
R
в каком смысле?
хм, кажись дотенв не сетит значение из файла если у тебя уже есть такая енв переменная
R
тоесть докером ты можешь заоверрайдить те переменные
R
и не двигать файлы туда сюда
R
возможно я не прав :)
R
но вот причем енв к таблицам я не понял