dotenv-cli はうまくいかないので、.env にコピーしてからビルドするというのがシンプルで良いかもです。
(ただし .env.local , .env.production が存在するとそれらがローカルサーバやビルド時に読み込まれるので、別名で運用する必要があります。)
package.json
"build:staging": "rm -f .env && cp .env.staging .env && next build",
dotenv-cli 、 env-cmd どちらか好きな方を使用しましょう
npm i -D dotenv-cli
npx dotenv -e .env.staging -- next build
.env.production も .env.prod に変更しておいて、明示的に指定してやるとうっかり読み込まれることがなくなるのでおすすめです。
dotenv で .env.prod を指定してビルド
mv .env.production .env.prod
npx dotenv -e .env.prod -- next build
Dockerfile で .env.prod を .env にコピーしてからビルド
RUN COPY .env.prod .env && \
npm run build
なお、.env.local がある場合は .env.development にリネームしておきましょう
npm i -D env-cmd
env-cmd -f .env.staging next build