I am running into an issue when deploying my Phoenix + Tailwind application to production. Tailwind seems to work fine when I run it locally but the prod instance has no CSS. It seems pretty straight forward so I am not sure what I am missing. The only thing I can think of is that I am missing something in the Dockerfile.
Many thanks,
Peter
tailwind.config.js
module.exports = {
content: [
'./js//*.js’,
"…/lib//.html.eex",
"…/lib/**/.html.leex",
“…/lib/**/*.html.heex”,
],
theme: {
extend: {},
},
plugins: ,
}
mix.exs
defp deps do
[
{:phoenix, “~> 1.6.6”},
{:tailwind, “~> 0.1”, runtime: Mix.env() == :dev},
#… redacted
]
end
defp aliases do
[
setup: [“deps.get”],
“assets.deploy”: [
“esbuild default --minify”,
“tailwind default --minify”,
“phx.digest”
],
]
app.css
@tailwind base;
@tailwind components;
@tailwind utilities;
Dockerfile
ARG MIX_ENV=“prod”
build stage
FROM hexpm/elixir:1.12.3-erlang-24.1.2-alpine-3.14.2 AS build
install build dependencies
RUN apk add --no-cache build-base git python3 curl
sets work dir
WORKDIR /app
install hex + rebar
RUN mix local.hex --force && mix local.rebar --force
ARG MIX_ENV
ENV MIX_ENV="${MIX_ENV}"
install mix dependencies
COPY mix.exs mix.lock ./
RUN mix deps.get --only $MIX_ENV
copy compile configuration files
RUN mkdir config
COPY config/config.exs config/$MIX_ENV.exs config/
compile dependencies
RUN mix deps.compile
copy assets
COPY priv priv
COPY assets assets
Compile assets
RUN mix assets.deploy
compile project
COPY lib lib
RUN mix compile
copy runtime configuration file
COPY rel rel
COPY config/runtime.exs config/
assemble release
RUN mix release
app stage
FROM alpine:3.14.2 AS app
ARG MIX_ENV
install runtime dependencies
RUN apk add --no-cache libstdc++ openssl ncurses-libs
ENV USER=“elixir”
WORKDIR “/home/${USER}/app”
Create unprivileged user to run the release
RUN
addgroup
-g 1000
-S “${USER}”
&& adduser
-s /bin/sh
-u 1000
-G “${USER}”
-h “/home/${USER}”
-D “${USER}”
&& su “${USER}”
run as user
USER “${USER}”
copy release executables
COPY --from=build --chown="${USER}":"${USER}" /app/_build/"${MIX_ENV}"/rel/igniteopedia_live ./
ENTRYPOINT [“bin/igniteopedia_live”]
CMD [“start”]