Skip to content

Commit

Permalink
next/prisma/trpc support
Browse files Browse the repository at this point in the history
  • Loading branch information
rubys committed Dec 23, 2024
1 parent d7ee571 commit 2a978aa
Show file tree
Hide file tree
Showing 7 changed files with 2,292 additions and 0 deletions.
6 changes: 6 additions & 0 deletions gdf.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,12 @@ export class GDF {
} else return false
}

// Does this application use trpc?
get trpc() {
return !!this.#pj.dependencies?.['@trpc/server'] &&
!!this.#pj.dependencies?.['@trpc/client']
}

// Does this application use nuxt.js?
get nuxtjs() {
return !!this.#pj.dependencies?.nuxt
Expand Down
5 changes: 5 additions & 0 deletions templates/Dockerfile.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,19 @@ RUN RELEASE=$(awk -F'@' '{print $2}' /home/meteor/.meteor/release) && curl https
<% } -%>
# Install node modules
COPY<% if (options.link) { %> --link<% } %> <%= packageFiles.join(' ') %> ./
<% if (trpc && prisma) { -%>
COPY<% if (options.link) { %> --link<% } %> prisma .
<% } -%>
RUN <%- buildCache %><%= packagerInstall %>

<% if (meteor) { -%>
RUN meteor npm install
<% } -%>
<% if (prisma) { -%>
# Generate Prisma Client
<% if (!trpc) { -%>
COPY<% if (options.link) { %> --link<% } %> prisma .
<% } -%>
RUN <%= npx %> prisma generate
<% } -%>
Expand Down
6 changes: 6 additions & 0 deletions test/frameworks/next-trpc/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/.git
/node_modules
.dockerignore
.env
Dockerfile
fly.toml
59 changes: 59 additions & 0 deletions test/frameworks/next-trpc/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# syntax = docker/dockerfile:1

# Adjust NODE_VERSION as desired
ARG NODE_VERSION=xxx
FROM node:${NODE_VERSION}-slim AS base

LABEL fly_launch_runtime="Next.js/Prisma"

# Next.js/Prisma app lives here
WORKDIR /app

# Set production environment
ENV NODE_ENV="production"


# Throw-away build stage to reduce size of final image
FROM base AS build

# Install packages needed to build node modules
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential node-gyp openssl pkg-config python-is-python3

# Install node modules
COPY package-lock.json package.json ./
COPY prisma .
RUN npm ci --include=dev

# Generate Prisma Client
RUN npx prisma generate

# Copy application code
COPY . .

# Build application
RUN npx next build --experimental-build-mode compile


# Final stage for app image
FROM base

# Install packages needed for deployment
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y openssl && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives

# Copy built application
COPY --from=build /app /app

# Setup sqlite3 on a separate volume
RUN mkdir -p /data
VOLUME /data

# Entrypoint prepares the database.
ENTRYPOINT [ "/app/docker-entrypoint.js" ]

# Start the server by default, this can be overwritten at runtime
EXPOSE 3000
ENV DATABASE_URL="file:///data/sqlite.db"
CMD [ "npm", "run", "start" ]
Loading

0 comments on commit 2a978aa

Please sign in to comment.