-
-
Save tommyp/09ddb7ac8ebbd28bb27b5e98226fb45f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# exit on error | |
set -o errexit | |
# Initial setup | |
mix deps.get --only prod | |
MIX_ENV=prod mix compile | |
# Compile assets | |
MIX_ENV=prod mix assets.deploy | |
# npm run deploy --prefix ./assets | |
mix phx.digest | |
MIX_ENV=prod mix release --overwrite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 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 :cast, CastWeb.Endpoint, | |
# Do not print debug messages in production | |
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: | |
# | |
port = String.to_integer(System.get_env("PORT") || "4000") | |
config :cast, CastWeb.Endpoint, | |
cache_static_manifest: "priv/static/cache_manifest.json", | |
url: [host: System.get_env("RENDER_EXTERNAL_HOSTNAME") || "localhost", port: port], | |
server: true, | |
https: [ | |
port: 443, | |
cipher_suite: :strong, | |
keyfile: System.get_env("SSL_KEY_PATH"), | |
certfile: System.get_env("SSL_CERT_PATH") | |
] | |
# | |
# 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 :cast, CastWeb.Endpoint, | |
# force_ssl: [hsts: true] | |
# | |
# Check `Plug.SSL` for all available options in `force_ssl`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Config | |
# config/runtime.exs is executed for all environments, including | |
# during releases. It is executed after compilation and before the | |
# system starts, so it is typically used to load production configuration | |
# and secrets from environment variables or elsewhere. Do not define | |
# any compile-time configuration in here, as it won't be applied. | |
# The block below contains prod specific runtime configuration. | |
# ## Using releases | |
# | |
# If you use `mix release`, you need to explicitly enable the server | |
# by passing the PHX_SERVER=true when you start it: | |
# | |
# PHX_SERVER=true bin/cast start | |
# | |
# Alternatively, you can use `mix phx.gen.release` to generate a `bin/server` | |
# script that automatically sets the env var above. | |
if System.get_env("PHX_SERVER") do | |
config :cast, CastWeb.Endpoint, server: true | |
end | |
if config_env() == :prod do | |
database_url = | |
System.get_env("DATABASE_URL") || | |
raise """ | |
environment variable DATABASE_URL is missing. | |
For example: ecto://USER:PASS@HOST/DATABASE | |
""" | |
maybe_ipv6 = if System.get_env("ECTO_IPV6"), do: [:inet6], else: [] | |
config :cast, Cast.Repo, | |
# ssl: true, | |
url: database_url, | |
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"), | |
socket_options: maybe_ipv6 | |
# The secret key base is used to sign/encrypt cookies and other secrets. | |
# A default value is used in config/dev.exs and config/test.exs but you | |
# want to use a different value for prod and you most likely don't want | |
# to check this value into version control, so we use an environment | |
# variable instead. | |
secret_key_base = | |
System.get_env("SECRET_KEY_BASE") || | |
raise """ | |
environment variable SECRET_KEY_BASE is missing. | |
You can generate one by calling: mix phx.gen.secret | |
""" | |
host = System.get_env("PHX_HOST") || "example.com" | |
port = String.to_integer(System.get_env("PORT") || "4000") | |
config :cast, CastWeb.Endpoint, | |
url: [host: host, port: port, scheme: "https"], | |
http: [ | |
# Enable IPv6 and bind on all interfaces. | |
# Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access. | |
# See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html | |
# for details about using IPv6 vs IPv4 and loopback vs public addresses. | |
ip: {0, 0, 0, 0, 0, 0, 0, 0}, | |
port: port | |
], | |
https: [ | |
port: 443, | |
cipher_suite: :strong | |
], | |
secret_key_base: secret_key_base | |
# ## Configuring the mailer | |
# | |
# In production you need to configure the mailer to use a different adapter. | |
# Also, you may need to configure the Swoosh API client of your choice if you | |
# are not using SMTP. Here is an example of the configuration: | |
# | |
# config :cast, Cast.Mailer, | |
# adapter: Swoosh.Adapters.Mailgun, | |
# api_key: System.get_env("MAILGUN_API_KEY"), | |
# domain: System.get_env("MAILGUN_DOMAIN") | |
# | |
# For this example you need include a HTTP client required by Swoosh API client. | |
# Swoosh supports Hackney and Finch out of the box: | |
# | |
# config :swoosh, :api_client, Swoosh.ApiClient.Hackney | |
# | |
# See https://hexdocs.pm/swoosh/Swoosh.html#module-installation for details. | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment