fix: Build assets as part of Docker build

This commit is contained in:
Robert Prehn 2021-01-08 12:47:00 -06:00
parent 696e312a8c
commit 24892db8fd
3 changed files with 24 additions and 5 deletions

View file

@ -1,4 +1,4 @@
FROM elixir:1.8.0-alpine
FROM elixir:1.8.0-alpine AS elixir1
RUN apk add make gcc libc-dev
@ -30,7 +30,21 @@ RUN mix deps.compile
ADD ./script /root/app/script
ADD ./apps /root/app/apps
RUN mix phx.digest
RUN MAKE=cmake mix compile
FROM node:15.0
WORKDIR /root/app/apps/app/assets/
COPY --from=0 /root/app/apps/app/assets/ /root/app/apps/app/assets
COPY --from=0 /root/app/deps/phoenix/ /root/app/apps/app/assets/node_modules/phoenix
COPY --from=0 /root/app/deps/phoenix_html/ /root/app/apps/app/assets/node_modules/phoenix_html
RUN npm install
RUN npm run deploy
FROM elixir1
COPY --from=1 /root/app/apps/app/priv/static/ /root/app/apps/app/priv/static
RUN mix phx.digest
CMD ["mix", "phx.server"]

View file

@ -5,7 +5,6 @@
"scripts": {
"deploy": "webpack --mode production",
"watch": "webpack --mode development --watch",
"preinstall": "npx npm-force-resolutions",
"profile": "webpack --mode development --plugin webpack/lib/debug/ProfilingPlugin"
},
"dependencies": {

View file

@ -20,10 +20,15 @@ secret_key_base = System.get_env("SECRET_KEY_BASE")
]
|> Enum.map(fn {otp_app, module, start_server} ->
endpoint = Module.concat(module, "Endpoint")
extra_opts =
if start_server do
[cache_static_manifest: "priv/static/cache_manifest.json"]
else
[]
end
config otp_app, endpoint,
config otp_app, endpoint, [
url: [host: "example.com", port: 80],
cache_static_manifest: "priv/static/cache_manifest.json",
http: [
port: String.to_integer(System.get_env("PORT") || "4000"),
transport_options: [socket_opts: [:inet6]]
@ -32,6 +37,7 @@ secret_key_base = System.get_env("SECRET_KEY_BASE")
pubsub_server: App.PubSub,
live_view: [signing_salt: "g5ltUbnQ"],
server: start_server
] ++ extra_opts
end)
# ## Using releases (Elixir v1.9+)