[ Это было изначально Опубликовано в дискуссии GitHub о репозитории Nodewood ; Добавление здесь для потомства. ]
Недавно я развернул ванильный экземпляр Nodewood , JavaScript SaaS Starter Kit, в облако. Я выбрал render.com Но это может помочь с другими платформами (PAAS).
Вещи, которые я настроил перед развертыванием:
- Свежий проект Nodewood, работающий на местном уровне в соответствии с гидом (отличные документы!)
- Мой проект Nodewood подтолкнул к частному github Repo (с изменениями, описанными ниже)
- Аккаунт полосы (активирован, поэтому у меня есть ключи от API)
- Рендеринг аккаунт, связанный с моей учетной записью GitHub
- Postgres DB от рендеринга (аддон за 7 долларов/месяц)
Это похоже на большую работу, но это довольно быстро.
Изменения проекта
knexfile.js
❗ Добавить knexfile.js к .gitignore так что это не будет частью производственной кодовой базы. Конфигурация KNEX, специфичная для производства, будет добавлена в конфигурацию службы рендеринга (охватывается ниже). Запустить > git rm knexfile.js Если он уже был добавлен в репо.
package.json
Добавьте несколько полезных команд в Сценарии Для производства при рендере:
+ "production:build": "yarn && yarn production:migrate && yarn production:stripe-sync && yarn production:build-ui", + "production:migrate": "knex migrate:latest --env production", + "production:stripe-sync": "npx @nodewood/cli stripe:sync --no-confirm", + "production:build-ui": "NODE_ENV=production yarn build-ui", + "production:start": "node app/api/api.js",
Это простые помощники, которые могут быть отредактированы позже, если это необходимо. Рендеринг будет настроен для запуска их как часть процесса сборки и развертывания.
Настройка услуг
Создайте новый «веб -сервис», связанный с (частным) GitHub Repo. 7 долларов США/месяц
Настройки
❗ Изменить опцию «среда» на «Узел». Рендеринг будет автоматически расстегнуть «Docker», но в этом случае он добавит несколько ненужных накладных расходов.
Команда сборки: Производство пряжи: сборка Пользовательский скрипт добавлен в package.json, который будет работать с каждым развертыванием
Начало команды: Производство пряжи: начало запустить API
Расширенные настройки
Переменная среды:
Ключ: Node_env , значение: «Производство» — просто чтобы убедиться, что наш код знает, где он находится.
3 секретные файлы:
.env: Скопировано из локального проекта с обновленнымDB_переменные для базы данных рендеринга и обновленного производстваPK_иSK_Ключи от полосы.nodewood.js: скопировано точно из местного проекта 👍🏻knexfile.js: только с производственным объектом, содержащим детали базы данных рендеринга. Выглядит похоже на:
module.exports = {
production: {
client: "postgresql",
connection: {
host: "Hostname from Render database",
database: "myapp",
user: "myapp",
password: "generatedpassword"
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: "knex_migrations",
stub: "migrations.stub",
directory: ["./wood/migrations", "./app/migrations"]
}
}
};
Развернуть 🚀
Сделайте и протолкните свою основную ветвь GIT, рендеринг справится с остальными.
Использование вашего приложения Nodewood
- Посетите свое приложение Nodewood (вероятно, URL .onrender.com), чтобы увидеть статический контент (из
./www/dist/) - Зарегистрируйтесь на учетной записи
- Отредактируйте новую запись пользователя в базе данных, чтобы
email_confirmedиaccount_typeАнкет (Я использую Postico.App на моем Mac, чтобы подключиться к базе данных рендеринга для этого) - Посетите раздел администратора вашего приложения Nodewood в браузере!
Насколько я дошел до сих пор, но отсюда я могу просто сосредоточиться на своей идее и не беспокоиться о развертывании.
Примечания/идеи:
- Я не проверял, может ли KNEX быть настроен из .env или аналогичным — это устранило бы необходимость в производстве
./knexfile.js - Еще одна почтала еще не была настроена.
- Вероятно, можно развернуть с Docker на рендеринге, но Такого рода побеждает цель здесь 😄
- Я не проверял, сколько Postgres соединений разрешено службой DB. Так что мне может потребоваться обновить производственный Knex
бассейнконфигурация
Оригинал: «https://dev.to/tbeseda/deploying-nodewood-38ag»