Dockerized Node.js project starter using following stack:
# Clone repo:
git clone [email protected]:piotrkabacinski/node-starter.git --depth 1
# Create .env file based on template file:
cp .env.template .env
docker compose build
# Install dependencies:
docker compose run --rm app pnpm i
# Create Prisma client:
docker compose run --rm app pnpm run prisma -- generate
# Run migrations:
docker compose run --rm app pnpm run migration:deploy
# Run server:
docker compose upWhen installing new dependencies locally do it within container as well:
docker compose run --rm app pnpm iIf using VS Code try prisma extension for better DX.
When changing prisma's schema (src/db/schema.prisma) run migration command:
# Create and run migration:
pnpm run migration <migration name>
# Apply migrations on production server after deploy:
pnpm run migration:deploydocker compose run --rm app pnpm tdocker exec -it <container name prefix>_db_1 psql -U postgres
\l # List all data bases
\c <db name> # Connect to DB
\dt # Show data base tablesdocker exec -it <container name prefix>_redis_1 redis-cliFor manual tests of Todo API example you can import Insomnia workspace from insomnia.json.
Don't forget to generate prisma files first and then actuall build command:
pnpm install --frozen-lockfile && \
pnpm run prisma -- generate && \
pnpm run migration:deploy && \
pnpm run build