diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 5d2adff..0000000 --- a/.dockerignore +++ /dev/null @@ -1,46 +0,0 @@ -# This file excludes paths from the Docker build context. -# -# By default, Docker's build context includes all files (and folders) in the -# current directory. Even if a file isn't copied into the container it is still sent to -# the Docker daemon. -# -# There are multiple reasons to exclude files from the build context: -# -# 1. Prevent nested folders from being copied into the container (ex: exclude -# /assets/node_modules when copying /assets) -# 2. Reduce the size of the build context and improve build time (ex. /build, /deps, /doc) -# 3. Avoid sending files containing sensitive information -# -# More information on using .dockerignore is available here: -# https://docs.docker.com/engine/reference/builder/#dockerignore-file - -.dockerignore - -# Ignore git, but keep git HEAD and refs to access current commit hash if needed: -# -# $ cat .git/HEAD | awk '{print ".git/"$2}' | xargs cat -# d0b8727759e1e0e7aa3d41707d12376e373d5ecc -.git -!.git/HEAD -!.git/refs - -# Common development/test artifacts -/cover/ -/doc/ -/test/ -/tmp/ -.elixir_ls - -# Mix artifacts -/_build/ -/deps/ -*.ez - -# Generated on crash by the VM -erl_crash.dump - -# Static artifacts - These should be fetched and built inside the Docker image -# https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Release.html#module-docker -/assets/node_modules/ -/priv/static/assets/ -/priv/static/cache_manifest.json diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 7fc188d..0000000 --- a/Dockerfile +++ /dev/null @@ -1,94 +0,0 @@ -# Find eligible builder and runner images on Docker Hub. We use Ubuntu/Debian -# instead of Alpine to avoid DNS resolution issues in production. -# -# https://hub.docker.com/r/hexpm/elixir/tags?name=ubuntu -# https://hub.docker.com/_/ubuntu/tags -# -# This file is based on these images: -# -# - https://hub.docker.com/r/hexpm/elixir/tags - for the build image -# - https://hub.docker.com/_/debian/tags?name=trixie-20260112-slim - for the release image -# - https://pkgs.org/ - resource for finding needed packages -# - Ex: docker.io/hexpm/elixir:1.16.2-erlang-26.1.1-debian-trixie-20260112-slim -# -ARG ELIXIR_VERSION=1.16.2 -ARG OTP_VERSION=26.1.1 -ARG DEBIAN_VERSION=trixie-20260112-slim - -ARG BUILDER_IMAGE="docker.io/hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}" -ARG RUNNER_IMAGE="docker.io/debian:${DEBIAN_VERSION}" - -FROM ${BUILDER_IMAGE} AS builder - -# install build dependencies -RUN apt-get update \ - && apt-get install -y --no-install-recommends build-essential git \ - && rm -rf /var/lib/apt/lists/* - -# prepare build dir -WORKDIR /app - -# install hex + rebar -RUN mix local.hex --force \ - && mix local.rebar --force - -# set build ENV -ENV MIX_ENV="prod" - -# install mix dependencies -COPY mix.exs mix.lock ./ -RUN mix deps.get --only $MIX_ENV -RUN mkdir config - -# copy compile-time config files before we compile dependencies -# to ensure any relevant config change will trigger the dependencies -# to be re-compiled. -COPY config/config.exs config/${MIX_ENV}.exs config/ -RUN mix deps.compile - -COPY priv priv - -COPY lib lib - -# Compile the release -RUN mix compile - -# Changes to config/runtime.exs don't require recompiling the code -COPY config/runtime.exs config/ - -COPY rel rel -RUN mix release - -# start a new build stage so that the final image will only contain -# the compiled release and other runtime necessities -FROM ${RUNNER_IMAGE} AS final - -RUN apt-get update \ - && apt-get install -y --no-install-recommends libstdc++6 openssl libncurses6 locales ca-certificates \ - && rm -rf /var/lib/apt/lists/* - -# Set the locale -RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \ - && locale-gen - -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en -ENV LC_ALL=en_US.UTF-8 - -WORKDIR "/app" -RUN chown nobody /app - -# set runner ENV -ENV MIX_ENV="prod" - -# Only copy the final release from the build stage -COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/camp_api ./ - -USER nobody - -# If using an environment that doesn't automatically reap zombie processes, it is -# advised to add an init process such as tini via `apt-get install` -# above and adding an entrypoint. See https://github.com/krallin/tini for details -# ENTRYPOINT ["/tini", "--"] - -CMD ["/app/bin/server"] diff --git a/config/config.exs b/config/config.exs index 80547d3..eef8600 100644 --- a/config/config.exs +++ b/config/config.exs @@ -29,6 +29,8 @@ config :logger, :default_formatter, # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason +config :camp_api, :grist, api_key: System.get_env("GRIST_API_KEY") + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{config_env()}.exs" diff --git a/config/dev.exs b/config/dev.exs index ec2877d..2858b39 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -42,8 +42,6 @@ config :camp_api, CampApiWeb.Endpoint, # Enable dev routes for dashboard and mailbox config :camp_api, dev_routes: true -config :camp_api, :grist, api_key: System.get_env("GRIST_API_KEY") - # Do not include metadata nor timestamps in development logs config :logger, :default_formatter, format: "[$level] $message\n" diff --git a/config/runtime.exs b/config/runtime.exs index 1119b30..620db22 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -23,8 +23,6 @@ end config :camp_api, CampApiWeb.Endpoint, http: [port: String.to_integer(System.get_env("PORT", "4000"))] -config :camp_api, :grist, api_key: System.get_env("GRIST_API_KEY") - if config_env() == :prod do # 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 diff --git a/lib/camp_api_web/router.ex b/lib/camp_api_web/router.ex index cb7022c..d2f0653 100644 --- a/lib/camp_api_web/router.ex +++ b/lib/camp_api_web/router.ex @@ -1,13 +1,12 @@ defmodule CampApiWeb.Router do use CampApiWeb, :router - pipeline :public_api do + pipeline :api do plug :accepts, ["json"] - plug CORSPlug, origin: ["*"] end scope "/api", CampApiWeb do - pipe_through :public_api + pipe_through :api get "/gauge", GristController, :gauge diff --git a/mix.exs b/mix.exs index fcdfee0..fafc410 100644 --- a/mix.exs +++ b/mix.exs @@ -46,8 +46,7 @@ defmodule CampApi.MixProject do {:jason, "~> 1.2"}, {:dns_cluster, "~> 0.2.0"}, {:bandit, "~> 1.5"}, - {:req, "~> 0.5.0"}, - {:cors_plug, "~> 3.0"} + {:req, "~> 0.5.0"} ] end diff --git a/mix.lock b/mix.lock index 46e8d4f..e822db9 100644 --- a/mix.lock +++ b/mix.lock @@ -1,6 +1,5 @@ %{ "bandit": {:hex, :bandit, "1.9.0", "6dc1ff2c30948dfecf32db574cc3447c7b9d70e0b61140098df3818870b01b76", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "2538aaa1663b40ca9cbd8ca1f8a540cb49e5baf34c6ffef068369cc45f9146f2"}, - "cors_plug": {:hex, :cors_plug, "3.0.3", "7c3ac52b39624bc616db2e937c282f3f623f25f8d550068b6710e58d04a0e330", [:mix], [{:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "3f2d759e8c272ed3835fab2ef11b46bddab8c1ab9528167bd463b6452edf830d"}, "dns_cluster": {:hex, :dns_cluster, "0.2.0", "aa8eb46e3bd0326bd67b84790c561733b25c5ba2fe3c7e36f28e88f384ebcb33", [:mix], [], "hexpm", "ba6f1893411c69c01b9e8e8f772062535a4cf70f3f35bcc964a324078d8c8240"}, "finch": {:hex, :finch, "0.21.0", "b1c3b2d48af02d0c66d2a9ebfb5622be5c5ecd62937cf79a88a7f98d48a8290c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "87dc6e169794cb2570f75841a19da99cfde834249568f2a5b121b809588a4377"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, diff --git a/rel/overlays/bin/server b/rel/overlays/bin/server deleted file mode 100755 index 3f23efe..0000000 --- a/rel/overlays/bin/server +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -set -eu - -cd -P -- "$(dirname -- "$0")" -PHX_SERVER=true exec ./camp_api start diff --git a/rel/overlays/bin/server.bat b/rel/overlays/bin/server.bat deleted file mode 100755 index f61bf70..0000000 --- a/rel/overlays/bin/server.bat +++ /dev/null @@ -1,2 +0,0 @@ -set PHX_SERVER=true -call "%~dp0\camp_api" start