-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e83a63e
commit b708b8e
Showing
8 changed files
with
303 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
**/node_modules | ||
**/dist | ||
.redwood | ||
|
||
.env | ||
|
||
README.md | ||
LICENSE | ||
|
||
.git | ||
.gitignore | ||
|
||
.vscode | ||
.editorconfig | ||
|
||
Dockerfile | ||
docker-compose* | ||
.dockerignore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,3 +22,4 @@ api/src/lib/generateGraphiQLHeader.* | |
!.yarn/releases | ||
!.yarn/sdks | ||
!.yarn/versions | ||
mysql |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
# base | ||
# ---- | ||
FROM node:20-bookworm-slim as base | ||
|
||
RUN corepack enable | ||
|
||
# We tried to make the Dockerfile as lean as possible. In some cases, that means we excluded a dependency your project needs. | ||
# By far the most common is Python. If you're running into build errors because `python3` isn't available, | ||
# add `python3 make gcc \` before the `openssl \` line below and in other stages as necessary: | ||
RUN apt-get update && apt-get install -y \ | ||
openssl \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
USER node | ||
WORKDIR /home/node/app | ||
|
||
COPY --chown=node:node .yarnrc.yml . | ||
COPY --chown=node:node package.json . | ||
COPY --chown=node:node api/package.json api/ | ||
COPY --chown=node:node web/package.json web/ | ||
COPY --chown=node:node yarn.lock . | ||
|
||
RUN mkdir -p /home/node/.yarn/berry/index | ||
RUN mkdir -p /home/node/.cache | ||
|
||
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ | ||
--mount=type=cache,target=/home/node/.cache,uid=1000 \ | ||
CI=1 yarn install | ||
|
||
COPY --chown=node:node redwood.toml . | ||
COPY --chown=node:node graphql.config.js . | ||
COPY --chown=node:node .env.defaults .env.defaults | ||
|
||
# api build | ||
# --------- | ||
FROM base as api_build | ||
|
||
# If your api side build relies on build-time environment variables, | ||
# specify them here as ARGs. (But don't put secrets in your Dockerfile!) | ||
# | ||
# ARG MY_BUILD_TIME_ENV_VAR | ||
|
||
COPY --chown=node:node api api | ||
RUN yarn rw build api | ||
|
||
# web prerender build | ||
# ------------------- | ||
FROM api_build as web_build_with_prerender | ||
|
||
COPY --chown=node:node web web | ||
RUN yarn rw build web | ||
|
||
# web build | ||
# --------- | ||
FROM base as web_build | ||
|
||
COPY --chown=node:node web web | ||
RUN yarn rw build web --no-prerender | ||
|
||
# api serve | ||
# --------- | ||
FROM node:20-bookworm-slim as api_serve | ||
|
||
RUN corepack enable | ||
|
||
RUN apt-get update && apt-get install -y \ | ||
openssl \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
USER node | ||
WORKDIR /home/node/app | ||
|
||
COPY --chown=node:node .yarnrc.yml . | ||
COPY --chown=node:node package.json . | ||
COPY --chown=node:node api/package.json api/ | ||
COPY --chown=node:node yarn.lock . | ||
|
||
RUN mkdir -p /home/node/.yarn/berry/index | ||
RUN mkdir -p /home/node/.cache | ||
|
||
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ | ||
--mount=type=cache,target=/home/node/.cache,uid=1000 \ | ||
CI=1 yarn workspaces focus api --production | ||
|
||
COPY --chown=node:node redwood.toml . | ||
COPY --chown=node:node graphql.config.js . | ||
COPY --chown=node:node .env.defaults .env.defaults | ||
|
||
COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist | ||
COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db | ||
COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma | ||
|
||
ENV NODE_ENV=production | ||
|
||
# default api serve command | ||
# --------- | ||
# If you are using a custom server file, you must use the following | ||
# command to launch your server instead of the default api-server below. | ||
# This is important if you intend to configure GraphQL to use Realtime. | ||
# | ||
# CMD [ "./api/dist/server.js" ] | ||
CMD [ "node_modules/.bin/rw-server", "api" ] | ||
|
||
# web serve | ||
# --------- | ||
FROM node:20-bookworm-slim as web_serve | ||
|
||
RUN corepack enable | ||
|
||
USER node | ||
WORKDIR /home/node/app | ||
|
||
COPY --chown=node:node .yarnrc.yml . | ||
COPY --chown=node:node package.json . | ||
COPY --chown=node:node web/package.json web/ | ||
COPY --chown=node:node yarn.lock . | ||
|
||
RUN mkdir -p /home/node/.yarn/berry/index | ||
RUN mkdir -p /home/node/.cache | ||
|
||
RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ | ||
--mount=type=cache,target=/home/node/.cache,uid=1000 \ | ||
CI=1 yarn workspaces focus web --production | ||
|
||
COPY --chown=node:node redwood.toml . | ||
COPY --chown=node:node graphql.config.js . | ||
COPY --chown=node:node .env.defaults .env.defaults | ||
|
||
COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist | ||
|
||
ENV NODE_ENV=production \ | ||
API_PROXY_TARGET=http://api:8911 | ||
|
||
# We use the shell form here for variable expansion. | ||
CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET" | ||
|
||
# console | ||
# ------- | ||
FROM base as console | ||
|
||
# To add more packages: | ||
# | ||
# ``` | ||
# USER root | ||
# | ||
# RUN apt-get update && apt-get install -y \ | ||
# curl | ||
# | ||
# USER node | ||
# ``` | ||
|
||
COPY --chown=node:node api api | ||
COPY --chown=node:node web web | ||
COPY --chown=node:node scripts scripts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
services: | ||
redwood: | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
target: base | ||
command: yarn rw dev | ||
volumes: | ||
- .:/home/node/app | ||
- node_modules:/home/node/app/node_modules | ||
ports: | ||
- '8910:8910' | ||
depends_on: | ||
- db | ||
environment: | ||
- DATABASE_URL=mysql://redwood:redwood@db:3306/redwood | ||
- TEST_DATABASE_URL=mysql://redwood:redwood@db:3306/redwood_test | ||
- SESSION_SECRET=super_secret_session_key_change_me_in_production_please | ||
- CI= | ||
- NODE_ENV=development | ||
- REDWOOD_API_HOST=0.0.0.0 | ||
|
||
db: | ||
image: mysql:8.0 | ||
environment: | ||
MYSQL_ROOT_PASSWORD: redwood | ||
MYSQL_DATABASE: redwood | ||
MYSQL_USER: redwood | ||
MYSQL_PASSWORD: redwood | ||
ports: | ||
- '3306:3306' | ||
volumes: | ||
- mysql:/var/lib/mysql | ||
|
||
# After starting with `docker compose -f ./docker-compose.dev.yml up`, | ||
# use the console to run commands in the container: | ||
# | ||
# ``` | ||
# docker compose -f ./docker-compose.dev.yml run --rm -it console /bin/bash | ||
# root@...:/home/node/app# yarn rw prisma migrate dev | ||
# ``` | ||
console: | ||
user: root | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
target: console | ||
tmpfs: | ||
- /tmp | ||
command: 'true' | ||
environment: | ||
- DATABASE_URL=mysql://redwood:redwood@db:3306/redwood | ||
- TEST_DATABASE_URL=mysql://redwood:redwood@db:3306/redwood_test | ||
depends_on: | ||
- db | ||
|
||
volumes: | ||
node_modules: | ||
mysql: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
services: | ||
api: | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
target: api_serve | ||
# Without a command specified, the Dockerfile's api_serve CMD will be used. | ||
# If you are using a custom server file, you should either use the following | ||
# command to launch your server or update the Dockerfile to do so. | ||
# This is important if you intend to configure GraphQL to use Realtime. | ||
# command: "./api/dist/server.js" | ||
ports: | ||
- '8911:8911' | ||
depends_on: | ||
- db | ||
environment: | ||
- DATABASE_URL=mysql://redwood:redwood@db:3306/redwood | ||
- TEST_DATABASE_URL=mysql://redwood:redwood@db:3306/redwood_test | ||
- SESSION_SECRET=super_secret_session_key_change_me_in_production_please | ||
|
||
web: | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
target: web_serve | ||
ports: | ||
- '8910:8910' | ||
depends_on: | ||
- api | ||
environment: | ||
- API_PROXY_TARGET=http://api:8911 | ||
|
||
db: | ||
image: mysql:8.0 | ||
environment: | ||
MYSQL_ROOT_PASSWORD: redwood | ||
MYSQL_DATABASE: redwood | ||
MYSQL_USER: redwood | ||
MYSQL_PASSWORD: redwood | ||
ports: | ||
- '3306:3306' | ||
volumes: | ||
- mysql:/var/lib/mysql | ||
|
||
# After starting with `docker compose -f ./docker-compose.prod.yml up`, | ||
# use the console to run commands in the container: | ||
# | ||
# ``` | ||
# docker compose -f ./docker-compose.prod.yml run --rm -it console /bin/bash | ||
# ``` | ||
console: | ||
user: root | ||
build: | ||
context: . | ||
dockerfile: ./Dockerfile | ||
target: console | ||
tmpfs: | ||
- /tmp | ||
command: 'true' | ||
environment: | ||
- DATABASE_URL=mysql://redwood:redwood@db:3306/redwood | ||
- TEST_DATABASE_URL=mysql://redwood:redwood@db:3306/redwood_test | ||
depends_on: | ||
- db | ||
|
||
volumes: | ||
mysql: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters