Simplify your stack and build anything. Or everything.
Build tomorrow’s web with a modern solution you truly own.
Code-based nature means you can build on top of it to power anything.
It’s time to take back your content infrastructure.

Deploying Payload

default discord avatar
borke50002 years ago
4

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/deployment

But 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@latest

running

2.0.0

I've confirmed building locally works.


I'm trying to deploy on vercel and on build it exits not being able to find the

copyfiles

command.



The build logs are attached. Any help would be greatly appreciated, thank you!



And my env vars

  • discord user avatar
    alessiogr
    2 years ago

    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

    build

    or

    dist

    folders are completely ignored

  • default discord avatar
    borke50002 years ago

    Ah okay, thank you so much this clears up a lot of confusion on my end!



    However, I do see that I already have

    copyfiles

    as a

    devDependency

    here'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"
      }
    }
  • discord user avatar
    alessiogr
    2 years ago

    Hm try moving it to

    dependencies

    . Maybe vercel omits

    devDependencies

    when installing it (although then it would fail when running

    tsc

    as well)



    but give that a try



    In case it now fails at

    tsc

    , it might be an issue with the Dockerfile

  • default discord avatar
    borke50002 years ago

    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

    @360823574644129795

    I 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/473
Star on GitHub

Star

Chat on Discord

Discord

online

Can't find what you're looking for?

Get dedicated engineering support directly from the Payload team.