Merge pull request #2 from jyrama/release-ecto-scripts
Release ecto scripts + Configure secrets at runtime in prod release #1
This commit is contained in:
@@ -1,55 +1,8 @@
|
|||||||
use Mix.Config
|
use Mix.Config
|
||||||
|
|
||||||
# For production, don't forget to configure the url host
|
|
||||||
# to something meaningful, Phoenix uses this information
|
|
||||||
# when generating URLs.
|
|
||||||
#
|
|
||||||
# Note we also include the path to a cache manifest
|
|
||||||
# containing the digested version of static files. This
|
|
||||||
# manifest is generated by the `mix phx.digest` task,
|
|
||||||
# which you should run after static files are built and
|
|
||||||
# before starting your production server.
|
|
||||||
config :runosaari, RunosaariWeb.Endpoint,
|
config :runosaari, RunosaariWeb.Endpoint,
|
||||||
url: [host: "example.com", port: 80],
|
url: [host: "runosaari.net", port: 3000],
|
||||||
cache_static_manifest: "priv/static/cache_manifest.json"
|
cache_static_manifest: "priv/static/cache_manifest.json"
|
||||||
|
|
||||||
# Do not print debug messages in production
|
# Do not print debug messages in production
|
||||||
config :logger, level: :info
|
config :logger, level: :info
|
||||||
|
|
||||||
# ## SSL Support
|
|
||||||
#
|
|
||||||
# To get SSL working, you will need to add the `https` key
|
|
||||||
# to the previous section and set your `:url` port to 443:
|
|
||||||
#
|
|
||||||
# config :runosaari, RunosaariWeb.Endpoint,
|
|
||||||
# ...
|
|
||||||
# url: [host: "example.com", port: 443],
|
|
||||||
# https: [
|
|
||||||
# port: 443,
|
|
||||||
# cipher_suite: :strong,
|
|
||||||
# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
|
|
||||||
# certfile: System.get_env("SOME_APP_SSL_CERT_PATH"),
|
|
||||||
# transport_options: [socket_opts: [:inet6]]
|
|
||||||
# ]
|
|
||||||
#
|
|
||||||
# The `cipher_suite` is set to `:strong` to support only the
|
|
||||||
# latest and more secure SSL ciphers. This means old browsers
|
|
||||||
# and clients may not be supported. You can set it to
|
|
||||||
# `:compatible` for wider support.
|
|
||||||
#
|
|
||||||
# `:keyfile` and `:certfile` expect an absolute path to the key
|
|
||||||
# and cert in disk or a relative path inside priv, for example
|
|
||||||
# "priv/ssl/server.key". For all supported SSL configuration
|
|
||||||
# options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
|
|
||||||
#
|
|
||||||
# We also recommend setting `force_ssl` in your endpoint, ensuring
|
|
||||||
# no data is ever sent via http, always redirecting to https:
|
|
||||||
#
|
|
||||||
# config :runosaari, RunosaariWeb.Endpoint,
|
|
||||||
# force_ssl: [hsts: true]
|
|
||||||
#
|
|
||||||
# Check `Plug.SSL` for all available options in `force_ssl`.
|
|
||||||
|
|
||||||
# Finally import the config/prod.secret.exs which loads secrets
|
|
||||||
# and configuration from environment variables.
|
|
||||||
import_config "prod.secret.exs"
|
|
||||||
|
|||||||
@@ -1,19 +1,23 @@
|
|||||||
# In this file, we load production configuration and secrets
|
import Config
|
||||||
# from environment variables. You can also hardcode secrets,
|
|
||||||
# although such is generally not recommended and you have to
|
|
||||||
# remember to add this file to your .gitignore.
|
|
||||||
use Mix.Config
|
|
||||||
|
|
||||||
database_url =
|
database_name =
|
||||||
System.get_env("DATABASE_URL") ||
|
System.get_env("DATABASE_NAME") ||
|
||||||
raise """
|
raise """
|
||||||
environment variable DATABASE_URL is missing.
|
environment variable DATABASE_NAME is missing.
|
||||||
For example: ecto://USER:PASS@HOST/DATABASE
|
For example: runosaari
|
||||||
|
"""
|
||||||
|
|
||||||
|
database_socket_dir =
|
||||||
|
System.get_env("DATABASE_SOCKET_DIR") ||
|
||||||
|
raise """
|
||||||
|
environment variable DATABASE_SOCKET_DIR is missing.
|
||||||
|
For example: /var/run/postgresql
|
||||||
"""
|
"""
|
||||||
|
|
||||||
config :runosaari, Runosaari.Repo,
|
config :runosaari, Runosaari.Repo,
|
||||||
# ssl: true,
|
# ssl: true,
|
||||||
url: database_url,
|
database: database_name,
|
||||||
|
socket_dir: database_socket_dir,
|
||||||
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
|
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
|
||||||
|
|
||||||
secret_key_base =
|
secret_key_base =
|
||||||
@@ -35,7 +39,4 @@ config :runosaari, RunosaariWeb.Endpoint,
|
|||||||
# If you are doing OTP releases, you need to instruct Phoenix
|
# If you are doing OTP releases, you need to instruct Phoenix
|
||||||
# to start each relevant endpoint:
|
# to start each relevant endpoint:
|
||||||
#
|
#
|
||||||
# config :runosaari, RunosaariWeb.Endpoint, server: true
|
config :runosaari, RunosaariWeb.Endpoint, server: true
|
||||||
#
|
|
||||||
# Then you can assemble a release by calling `mix release`.
|
|
||||||
# See `mix help release` for more information.
|
|
||||||
24
lib/runosaari/release.ex
Normal file
24
lib/runosaari/release.ex
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
defmodule Runosaari.Release do
|
||||||
|
@app :runosaari
|
||||||
|
|
||||||
|
def migrate do
|
||||||
|
load_app()
|
||||||
|
|
||||||
|
for repo <- repos() do
|
||||||
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def rollback(repo, version) do
|
||||||
|
load_app()
|
||||||
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
|
||||||
|
end
|
||||||
|
|
||||||
|
defp repos do
|
||||||
|
Application.fetch_env!(@app, :ecto_repos)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp load_app do
|
||||||
|
Application.load(@app)
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user