Vercel! Một giải pháp khá là… Tạm được. Nó cung cấp cho chúng ta một môi trường, có thể deploy hầu hết các app nodejs lên đó và tặng bạn một database hoàn chỉnh! Tuy nhiên cần phải lưu ý:
Vì vậy đừng suy nghĩ tới việc dùng nó mãi mãi để duy trì một app. Hãy suy nghĩ tới việc sử dụng vps riêng thì tốt hơn.
Đầu tiên, hãy tạo một file vercel.json
như sau:
{
"version": 2,
"builds": [
{
"src": "./app.js",
"use": "@vercel/node"
},
{
"src": "public/**",
"use": "@vercel/static"
}
],
"routes": [
{
"src": "/((?!.*\\.\\w+$).*)",
"dest": "/app.js"
},
{
"src": "/(.+\\.[a-z]+)$",
"dest": "/public/$1"
}
]
}
Trước tiên, hãy chuyển file config/config.json
thành config.js
và sửa lại đường dẫn file config trong
.sequelizerc
:
// .sequelizerc
const path = require('path');
module.exports = {
config: path.resolve('config', 'config.js'),
};
Sau đó file config.js
sẽ như sau:
// config/config.js
require('dotenv').config();
const pg = require('pg');
module.exports = {
development: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
test: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
production: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
};
Sửa một chút phần scripts trong package.json
như sau:
{
"scripts": {
"dev": "nodemon ./bin/www",
"start": "node ./bin/www",
"postinstall": "npx sequelize-cli db:migrate",
"build": "npm run postinstall && npm run vercel-build"
}
}
Vô cùng đơn giản, đơn giản hơn sequelize rất nhiều!
Chúng ta hãy sửa file package.json
như sau:
{
"scripts": {
"postinstall": "npx prisma generate",
"build": "npm run postinstall && npm run vercel-build"
}
}
Rất đơn giản, postinstall
trong npm là một script chạy sau khi npm install
hoàn tất. Trong trường hợp này, nó đang dùng để migrate database.
Vercel có một cơ chế build mặc định, mình ghi đè nó bằng cách sử dụng thêm script build.
Truy cập vào đường dẫn này: https://vercel.com/[username]/~/stores
Trong đó: username
là username
Vercel của bạn!
Sau khi đã khởi tạp database thành công,
npm i -g vercel@latest
vercel login
vercel --prod
Truy cập vào đường dẫn này: https://vercel.com/[username]/[project_name]/stores
Trong đó:
username
là username
Vercel của bạn!project_name
là project_name
Vercel của bạn!Bấm nút liên kết là được thôi.
Để ý tên ENV sinh ra khi link database với dự án, nên để trong dự án giống trên vercel để đỡ lỗi.
Mỗi tài khoản chỉ có 1 database, không tạo thêm được
Nên kết nối database vercel vào pgadmin để dùng cho tiện kiểm soát
Vercel postgres là hàng free, rất chậm!!!