diff --git a/priv/templates/nova.template b/priv/templates/nova.template index a195d86..2592a93 100644 --- a/priv/templates/nova.template +++ b/priv/templates/nova.template @@ -24,3 +24,5 @@ {file, "nova/controller.dtl", "{{name}}/src/views/{{name}}_main.dtl"}. {file, "nova/.tool-versions", "{{name}}/.tool-versions"}. {file, "nova/.gitignore", "{{name}}/.gitignore"}. +{template, "nova/Dockerfile", "{{name}}/Dockerfile"}. +{file, "nova/.dockerignore", "{{name}}/.dockerignore"}. diff --git a/priv/templates/nova/.dockerignore b/priv/templates/nova/.dockerignore new file mode 100644 index 0000000..9cf65e3 --- /dev/null +++ b/priv/templates/nova/.dockerignore @@ -0,0 +1,10 @@ +_build +.rebar3 +.rebar +.git +log +logs +erl_crash.dump +rebar3.crashdump +*.beam +*.o diff --git a/priv/templates/nova/Dockerfile b/priv/templates/nova/Dockerfile new file mode 100644 index 0000000..50b87d3 --- /dev/null +++ b/priv/templates/nova/Dockerfile @@ -0,0 +1,29 @@ +ARG ERLANG_VERSION +ARG REBAR_VERSION + +FROM erlang:${ERLANG_VERSION} AS builder + +RUN wget -q "https://github.com/erlang/rebar3/releases/download/${REBAR_VERSION}/rebar3" -O /usr/local/bin/rebar3 && \ + chmod +x /usr/local/bin/rebar3 + +WORKDIR /app + +COPY rebar.config rebar.lock ./ +RUN rebar3 compile --deps_only + +COPY . . +RUN rebar3 as prod release + +FROM debian:bookworm-slim + +RUN apt-get update && \ + apt-get install -y --no-install-recommends libncurses5 libssl3 libstdc++6 && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY --from=builder /app/_build/prod/rel/{{name}} ./ + +EXPOSE 8080 + +CMD ["bin/{{name}}", "foreground"] diff --git a/priv/templates/nova/prod_sys.config.src b/priv/templates/nova/prod_sys.config.src index 174fece..3f3178a 100644 --- a/priv/templates/nova/prod_sys.config.src +++ b/priv/templates/nova/prod_sys.config.src @@ -5,11 +5,12 @@ {logger_level, info}, {logger, [{handler, default, logger_std_h, - #{level => error, - config => #{file => "log/erlang.log"}}} + #{formatter => {nova_jsonlogger, #{new_line => true}}}} ]} ]}, {nova, [ + {shutdown_delay, 5000}, + {shutdown_drain_timeout, 15000}, {use_stacktrace, false}, {environment, prod}, {cowboy_configuration, #{ diff --git a/priv/templates/nova/vm.args.src b/priv/templates/nova/vm.args.src index 8bd9d68..f3fd822 100644 --- a/priv/templates/nova/vm.args.src +++ b/priv/templates/nova/vm.args.src @@ -1,6 +1,7 @@ --sname '{{name}}' - --setcookie {{name}}_cookie +## Distributed Erlang is disabled by default. +## Uncomment the lines below if you need distribution. +## -sname '{{name}}' +## -setcookie {{name}}_cookie +K true -+A30 \ No newline at end of file ++A30