Add latest phx.gen.docker files

This commit is contained in:
Chris McCord 2021-12-03 08:54:28 -05:00
parent 316007b970
commit de310cd1e5
9 changed files with 55 additions and 28 deletions

View file

@ -1,2 +1,18 @@
priv/uploads .dockerignore
deps/ # there are valid reasons to keep the .git, namely so that you can get the
# current commit hash
#.git
.log
tmp
# Mix artifacts
_build
deps
*.ez
releases
# Generate on crash by the VM
erl_crash.dump
# Static artifacts
node_modules

View file

@ -50,13 +50,9 @@ COPY priv priv
# step down so that `lib` is available. # step down so that `lib` is available.
COPY assets assets COPY assets assets
# For Phoenix 1.6 and later, compile assets using esbuild # compile assets
RUN mix assets.deploy RUN mix assets.deploy
# For Phoenix versions earlier than 1.6, compile assets npm
# RUN cd assets && yarn install && yarn run webpack --mode production
# RUN mix phx.digest
# Compile the release # Compile the release
COPY lib lib COPY lib lib
@ -86,13 +82,8 @@ WORKDIR "/app"
RUN chown nobody /app RUN chown nobody /app
# Only copy the final release from the build stage # Only copy the final release from the build stage
COPY --from=builder --chown=nobody:root /app/_build/prod/rel ./ COPY --from=builder --chown=nobody:root /app/_build/prod/rel/live_beats ./
USER nobody USER nobody
# Create a symlink to the application directory by extracting the directory name. This is required CMD /app/bin/server
# since the release directory will be named after the application, and we don't know that name.
RUN set -eux; \
ln -nfs /app/$(basename *)/bin/$(basename *) /app/entry
CMD /app/entry start

View file

@ -14,11 +14,13 @@ if config_env() == :prod do
For example: ecto://USER:PASS@HOST/DATABASE For example: ecto://USER:PASS@HOST/DATABASE
""" """
ipv6? = !!System.get_env("IPV6") server? = System.get_env("PHX_SERVER") == "true"
host = System.get_env("PHX_HOST") || "example.com"
ecto_ipv6? = System.get_env("ECTO_IPV6") == "true"
config :live_beats, LiveBeats.Repo, config :live_beats, LiveBeats.Repo,
# ssl: true, # ssl: true,
socket_options: if(ipv6?, do: [:inet6], else: []), socket_options: if(ecto_ipv6?, do: [:inet6], else: []),
url: database_url, url: database_url,
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10") pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
@ -29,7 +31,6 @@ if config_env() == :prod do
You can generate one by calling: mix phx.gen.secret You can generate one by calling: mix phx.gen.secret
""" """
host = System.get_env("URL_HOST") || "example.com"
config :live_beats, LiveBeatsWeb.Endpoint, config :live_beats, LiveBeatsWeb.Endpoint,
url: [host: host, port: 80], url: [host: host, port: 80],
@ -41,9 +42,8 @@ if config_env() == :prod do
ip: {0, 0, 0, 0, 0, 0, 0, 0}, ip: {0, 0, 0, 0, 0, 0, 0, 0},
port: String.to_integer(System.get_env("PORT") || "4000") port: String.to_integer(System.get_env("PORT") || "4000")
], ],
check_origin: ["//#{host}"],
secret_key_base: secret_key_base, secret_key_base: secret_key_base,
server: true server: server?
config :live_beats, :files, [ config :live_beats, :files, [
uploads_dir: "/app/uploads", uploads_dir: "/app/uploads",

View file

@ -5,11 +5,12 @@ kill_timeout = 5
processes = [] processes = []
[deploy] [deploy]
release_command = "/app/entry eval LiveBeats.Release.migrate" release_command = "/app/bin/migrate"
[env] [env]
IPV6 = 1 PHX_HOST = "livebeats.fly.dev"
URL_HOST = "livebeats.fly.dev" ECTO_IPV6 = "true"
ERL_AFLAGS = "-proto_dist inet6_tcp"
[mounts] [mounts]
source="data" source="data"

View file

@ -33,7 +33,8 @@ defmodule LiveBeats.MixProject do
# Type `mix help deps` for examples and options. # Type `mix help deps` for examples and options.
defp deps do defp deps do
[ [
{:phoenix, "~> 1.6.0"}, # {:phoenix, "~> 1.6.0"},
{:phoenix, path: "~/oss/phoenix", override: true},
{:phoenix_ecto, "~> 4.4"}, {:phoenix_ecto, "~> 4.4"},
{:ecto_sql, "~> 3.6"}, {:ecto_sql, "~> 3.6"},
{:postgrex, ">= 0.0.0"}, {:postgrex, ">= 0.0.0"},

View file

@ -10,7 +10,7 @@
"ecto_sql": {:hex, :ecto_sql, "3.7.0", "2fcaad4ab0c8d76a5afbef078162806adbe709c04160aca58400d5cbbe8eeac6", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a26135dfa1d99bf87a928c464cfa25bba6535a4fe761eefa56077a4febc60f70"}, "ecto_sql": {:hex, :ecto_sql, "3.7.0", "2fcaad4ab0c8d76a5afbef078162806adbe709c04160aca58400d5cbbe8eeac6", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a26135dfa1d99bf87a928c464cfa25bba6535a4fe761eefa56077a4febc60f70"},
"erlog": {:git, "git://github.com/segun/erlog.git", "76825e0500b6b62b99f28411933dc15a1cb2817f", [ref: "master"]}, "erlog": {:git, "git://github.com/segun/erlog.git", "76825e0500b6b62b99f28411933dc15a1cb2817f", [ref: "master"]},
"erlp3tags": {:git, "https://github.com/segun/erlp3tags.git", "9b6c72da9057b9e00c7711148ce10e6cdbacae18", []}, "erlp3tags": {:git, "https://github.com/segun/erlp3tags.git", "9b6c72da9057b9e00c7711148ce10e6cdbacae18", []},
"esbuild": {:hex, :esbuild, "0.2.2", "864b8d1cdab8aa3d08f9811af79b54d89d06dc2ec806b22b3e9bf4535579b0d5", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "0742259fded40073eb8583d38d9265b41c269ce29842e2d26b0de69b38324bf0"}, "esbuild": {:hex, :esbuild, "0.3.4", "416203c642eb84b207f882cf7953a1fd7bb71e23f5f86554f983bb7bad18b897", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "c472e38b37e9547113776b1e4b64b44ec540bcc7056dd252c2c3ffba41aa9793"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"floki": {:hex, :floki, "0.31.0", "f05ee8a8e6a3ced4e62beeb2c79a63bc8e12ab98fbaaf6e6a3d9b76b1278e23f", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "b05afa372f5c345a5bf240ac25ea1f0f3d5fcfd7490ac0beeb4a203f9444891e"}, "floki": {:hex, :floki, "0.31.0", "f05ee8a8e6a3ced4e62beeb2c79a63bc8e12ab98fbaaf6e6a3d9b76b1278e23f", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "b05afa372f5c345a5bf240ac25ea1f0f3d5fcfd7490ac0beeb4a203f9444891e"},
"gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"}, "gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"},

View file

@ -1,6 +1,18 @@
#!/bin/sh #!/bin/sh
ip=$(grep fly-local-6pn /etc/hosts | cut -f 1) # Sets and enables heart (recommended only in daemon mode)
export RELEASE_DISTRIBUTION=name # case $RELEASE_COMMAND in
export RELEASE_NODE=$FLY_APP_NAME@$ip # daemon*)
export ELIXIR_ERL_OPTIONS="-proto_dist inet6_tcp" # HEART_COMMAND="$RELEASE_ROOT/bin/$RELEASE_NAME $RELEASE_COMMAND"
# export HEART_COMMAND
# export ELIXIR_ERL_OPTIONS="-heart"
# ;;
# *)
# ;;
# esac
# Set the release to work across nodes. If using the long name format like
# the one below (my_app@127.0.0.1), you need to also uncomment the
# RELEASE_DISTRIBUTION variable below. Must be "sname", "name" or "none".
# export RELEASE_DISTRIBUTION=name
# export RELEASE_NODE=<%= @release.name %>@127.0.0.1

3
rel/overlays/bin/migrate Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
cd -P -- "$(dirname -- "$0")"
./live_beats eval LiveBeats.Release.migrate

3
rel/overlays/bin/server Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
cd -P -- "$(dirname -- "$0")"
PHX_SERVER=true ./live_beats start