So I want to hook up the preview button with a
process.env
variable. I looked around here for similar issues, and all seem to be solved by using the
PAYLOAD_PUBLIC_
prefix, which I already am using.
admin: {
...
preview: (doc) => {
const page = doc as any as Home;
let pathToUse = '';
if (page.page) {
pathToUse = page.page.slug === 'home' ? '' : page.page.slug;
}
return `${process.env.PAYLOAD_PUBLIC_WEB_URL}/api/preview? url=${process.env.PAYLOAD_PUBLIC_WEB_URL}/${pathToUse}`;
},
...
}
This works in development mode, but gives me an
undefined
for each variable after building it.
I'm pretty sure the
PAYLOAD_PUBLIC_
env variables are being replaced when you build payload (probably somewhere in your CI pipeline) Perhaps you need to define the env variables you want to use for production in there as well 🙂
When I add
dotenv.config()
it appears to be working
it just feels like this is not what the docs are trying me to tell
check out this thread:
https://github.com/payloadcms/payload/issues/1654Can you point me to the docs that confused you? Maybe we need to clean a section up
Actually this reply sums it nice up:
https://github.com/payloadcms/payload/issues/1654#issuecomment-1403972303
I guess I was looking at it the wrong way, I just looked at it as one build. But there is of course a separation in server and client build.
It's not really clear from this imo:
https://payloadcms.com/docs/admin/environment-vars#environment-variables-in-admin-uihad to find this thread
If you're using Docker you will need to provide args for the build step and modify the Dockerfile
do you have a example of integrating env vars in Dockerfile?
@August sure
ARG PAYLOAD_PUBLIC_MERLIN_URL=http://localhost:3000
ENV PAYLOAD_PUBLIC_MERLIN_URL=$PAYLOAD_PUBLIC_MERLIN_URL
and then supply the arg during build time
Star
Discord
online
Get dedicated engineering support directly from the Payload team..