Size: a a a

Эликсир и Вунш

2019 December 12

PS

Paul Smal in Эликсир и Вунш
** (ArgumentError) argument error
   :erlang.binary_to_integer(nil)

? переменная окружения DB_PORT не назначена
источник

ВК

Василий Кузнецов in Эликсир и Вунш
Слушайте, вот я смотрю на эти ваши System.get_env
у вас же по любому лежит все в каком нибудь .env файле.
Вот я перешел на *.secret.exs и от env избавился. Я что то не так делаю?
источник

DR

Dmitry Russ (Aleksandrov) in Эликсир и Вунш
Василий Кузнецов
Слушайте, вот я смотрю на эти ваши System.get_env
у вас же по любому лежит все в каком нибудь .env файле.
Вот я перешел на *.secret.exs и от env избавился. Я что то не так делаю?
В соответствии с https://12factor.net/ да, а так я к примеру вообще TOML предпочитаю.
источник

ВК

Василий Кузнецов in Эликсир и Вунш
судя по вводной с секцию конфиг этой статьи, secret файлы также относятся к окружению, ибо могут свободно меняться со сменой env. почитаю поподробнее, разберусь, спасибо
источник
2019 December 13

AU

Alexander Uljev in Эликсир и Вунш
А to_integer в конфиге нельзя использовать?
источник
2019 December 18

GS

Gleb Sinyavsky in Эликсир и Вунш
Привет, еще хитрый вопрос: есть небольшое приложение(никакого феникса, чистый эликсир), собираю релиз distillery, запускаю на локальной машине. При определенных условиях приложение крашится(это ожидаемое поведение), и я вижу что-то вроде
01:04:13.173 [info]   Application secret_application exited: shutdown
{"Kernel pid terminated",application_controller,"{application_terminated,secret_application,shutdown}"}
Kernel pid terminated (application_controller) ({application_terminated,secret_application,shutdown})

Crash dump is being written to: erl_crash.dump...done

И скрипт завершается, все ок.
Теперь я хочу запустить это в докере, собираю в elixir:1.9.4-alpine, запускаю в alpine:latest. Иии скипт не завершается, когда должен: Просто виснет, и, соответвенно, докер не знает, что его надо перезапустить. В логах ничего интересного - просто ошибки, из-за которых процессы попадали, и это должно было привести к завершению основного супервайзора. Но, либо супервайзор не помер, либо процесс VM после этого не завершился. Кто-нибудь сталкивался с таким, куда дебажить?
источник

Y

Yura in Эликсир и Вунш
Контейнер точно один и тот же?
источник

МБ

Максим Барулин in Эликсир и Вунш
Через ремшел подключится к ноде и посмотреть что там висит
источник

AB

Alexey Bolshakov in Эликсир и Вунш
а ты собирай не через дистеллири. уже ведь есть встроенный механизъм сборки релизов. в последних версиях
источник

GS

Gleb Sinyavsky in Эликсир и Вунш
@relaxcore локально запускаю не в контейнере, просто скриптом. @Slavenin хорошая мысль, можно посмотреть. @bolshakov_av спасибо, посмотрю
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Gleb Sinyavsky
Привет, еще хитрый вопрос: есть небольшое приложение(никакого феникса, чистый эликсир), собираю релиз distillery, запускаю на локальной машине. При определенных условиях приложение крашится(это ожидаемое поведение), и я вижу что-то вроде
01:04:13.173 [info]   Application secret_application exited: shutdown
{"Kernel pid terminated",application_controller,"{application_terminated,secret_application,shutdown}"}
Kernel pid terminated (application_controller) ({application_terminated,secret_application,shutdown})

Crash dump is being written to: erl_crash.dump...done

И скрипт завершается, все ок.
Теперь я хочу запустить это в докере, собираю в elixir:1.9.4-alpine, запускаю в alpine:latest. Иии скипт не завершается, когда должен: Просто виснет, и, соответвенно, докер не знает, что его надо перезапустить. В логах ничего интересного - просто ошибки, из-за которых процессы попадали, и это должно было привести к завершению основного супервайзора. Но, либо супервайзор не помер, либо процесс VM после этого не завершился. Кто-нибудь сталкивался с таким, куда дебажить?
Сталкивалась с зомби процессами в докере, помогла эта либа https://github.com/krallin/tini. Скачиваешь ее в докерфайле перед запуском релиза и запускаешь релиз через нее
источник

GS

Gleb Sinyavsky in Эликсир и Вунш
@apelsinka223 спасибо, посмотрю!
источник

SM

Sergei Maximov in Эликсир и Вунш
Anastasiya Dyachenko
Сталкивалась с зомби процессами в докере, помогла эта либа https://github.com/krallin/tini. Скачиваешь ее в докерфайле перед запуском релиза и запускаешь релиз через нее
Пишут, что начиная с версии докера 1.13 не нужно устанавливать tini в свой образ, т.к. он уже влючён в докер, и можно указать его как инит при запуске контейнера:

> If you are using Docker 1.13 or greater, Tini is included in Docker itself. This includes all versions of Docker CE. To enable Tini, just pass the --init flag to docker run.
источник

AD

Anastasiya Dyachenko in Эликсир и Вунш
Хм надо будет попробовать
источник

D

D in Эликсир и Вунш
Gleb Sinyavsky
Привет, еще хитрый вопрос: есть небольшое приложение(никакого феникса, чистый эликсир), собираю релиз distillery, запускаю на локальной машине. При определенных условиях приложение крашится(это ожидаемое поведение), и я вижу что-то вроде
01:04:13.173 [info]   Application secret_application exited: shutdown
{"Kernel pid terminated",application_controller,"{application_terminated,secret_application,shutdown}"}
Kernel pid terminated (application_controller) ({application_terminated,secret_application,shutdown})

Crash dump is being written to: erl_crash.dump...done

И скрипт завершается, все ок.
Теперь я хочу запустить это в докере, собираю в elixir:1.9.4-alpine, запускаю в alpine:latest. Иии скипт не завершается, когда должен: Просто виснет, и, соответвенно, докер не знает, что его надо перезапустить. В логах ничего интересного - просто ошибки, из-за которых процессы попадали, и это должно было привести к завершению основного супервайзора. Но, либо супервайзор не помер, либо процесс VM после этого не завершился. Кто-нибудь сталкивался с таким, куда дебажить?
есть еще один момент с alpine
alpine:3.9 у меня собирается корректно, а вот в alpine:10 был баг
https://gitlab.alpinelinux.org/alpine/aports/issues/9983
источник

D

D in Эликсир и Вунш
если alpine:latest это alpine:3.10 то у тебя может этот баг не дать запустить приложение
источник

D

D in Эликсир и Вунш
я так понимаю фикса пока нет, поэтому я запусккаю в alpine:3.9
источник

D

D in Эликсир и Вунш
Sergei Maximov
Пишут, что начиная с версии докера 1.13 не нужно устанавливать tini в свой образ, т.к. он уже влючён в докер, и можно указать его как инит при запуске контейнера:

> If you are using Docker 1.13 or greater, Tini is included in Docker itself. This includes all versions of Docker CE. To enable Tini, just pass the --init flag to docker run.
а как этот флаг использовать в docker-compose ??
источник

SM

Sergei Maximov in Эликсир и Вунш
D
если alpine:latest это alpine:3.10 то у тебя может этот баг не дать запустить приложение
latest-тэги использовать для чего-нибудь важного — вообще само по себе не очень решение. Нужно использовать версионные теги, а лучше вообще не теги, а sha256-сумму образа. У нас так однажды CI сломался из-за того, что в пределах одной версии образа Alpine ломающим образом поменялась версия awscli
источник

SM

Sergei Maximov in Эликсир и Вунш
D
а как этот флаг использовать в docker-compose ??
источник