Hey! I'm super new to payload but am absolutely loving it. Thank you for making it.
I've read through
https://payloadcms.com/docs/production/deploymentBut am still unclear on how to deploy payload. Are we supposed to build locally and check in the build and dist folders?
I created my project with
npx create-payload-app@latestrunning
2.0.0I've confirmed building locally works.
I'm trying to deploy on vercel and on build it exits not being able to find the
copyfilescommand.
The build logs are attached. Any help would be greatly appreciated, thank you!
And my env vars
Try adding copyfiles as a devDependency to your package.json
You're supposed to let it build by vercel
Every time you make a push to GitHub, vercel pulls down your project, builds it and then serves it via node
So vercel would only see what's published on your GitHub. Any local
buildor
distfolders are completely ignored
Ah okay, thank you so much this clears up a lot of confusion on my end!
However, I do see that I already have
copyfilesas a
devDependencyhere's my
package.json{
"name": "payload",
"description": "A blank template to get started with Payload",
"version": "1.0.0",
"main": "dist/server.js",
"license": "MIT",
"scripts": {
"dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts nodemon",
"build:payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload build",
"build:server": "tsc",
"build": "yarn copyfiles && yarn build:payload && yarn build:server",
"serve": "cross-env PAYLOAD_CONFIG_PATH=dist/payload.config.js NODE_ENV=production node dist/server.js",
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png}\" dist/",
"generate:types": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:types",
"generate:graphQLSchema": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:graphQLSchema",
"payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload",
"seed": "ts-node ./src/utils/seed.ts"
},
"dependencies": {
"@payloadcms/bundler-webpack": "^1.0.0",
"@payloadcms/db-mongodb": "^1.1.0",
"@payloadcms/plugin-cloud": "^2.0.0",
"@payloadcms/plugin-form-builder": "^1.0.15",
"@payloadcms/plugin-search": "^1.0.1",
"@payloadcms/plugin-seo": "^1.0.15",
"@payloadcms/richtext-slate": "^1.0.0",
"cross-env": "^7.0.3",
"dotenv": "^16.3.1",
"express": "^4.17.1",
"payload": "^2.0.0",
"payload-plugin-comments": "^1.0.2"
},
"devDependencies": {
"@types/express": "^4.17.9",
"copyfiles": "^2.4.1",
"nodemon": "^2.0.6",
"ts-node": "^9.1.1",
"typescript": "^4.8.4"
},
"resolutions": {
"jackspeak": "2.1.1"
}
}Hm try moving it to
dependencies. Maybe vercel omits
devDependencieswhen installing it (although then it would fail when running
tscas well)
but give that a try
In case it now fails at
tsc, it might be an issue with the Dockerfile
Okay, that seemed to work! The build and deployment succeeded thank you!
I'm still having routing issues it seems with vercel but that may be another issue. I'll try deploying with the Payload cloud
Can you take a look at my project?
Project ID: 657f63a1c23fbc500f770b58
FROM node:18.8-alpine as base
FROM base as builder
WORKDIR /home/node/app
COPY package*.json ./
COPY . .
RUN yarn install
RUN yarn build
FROM base as runtime
ENV NODE_ENV=production
ENV PAYLOAD_CONFIG_PATH=dist/payload.config.js
WORKDIR /home/node/app
COPY package*.json ./
COPY yarn.lock ./
RUN yarn install --production
COPY --from=builder /home/node/app/dist ./dist
COPY --from=builder /home/node/app/build ./build
EXPOSE 3000
CMD ["node", "dist/server.js"]And my docker compose. I'm building a CMS build on payload and astro I would love to understand how to deploy this...
version: '3'
services:
mongodb:
image: mongo:4.4.6
ports:
- '27017:27017'
command:
- --storageEngine=wiredTiger
volumes:
- data:/data/db
environment:
# provide your credentials here
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=example
payload:
image: node:18-alpine
ports:
- '3000:3000'
volumes:
- .:/home/node/app
- node_modules:/home/node/app/node_modules
working_dir: /home/node/app/
command: sh -c "yarn install && yarn dev"
depends_on:
- mongodb
env_file:
- .env
volumes:
data:
node_modules:Thanks
@360823574644129795I have a better understanding of how payload needs to be deployed, I'm also using multi tenancy so that added some complexity to the mix but ultimately it was mostly database issues not related to payload 😓 Coming from postgresql and I'm using mongo now so there was a little bit to understand there.
The easiest way I found to deploy was to heroku using this super helpful guide
https://github.com/payloadcms/payload/discussions/473Star
Discord
online
Get dedicated engineering support directly from the Payload team.