Skip to content

Commit

Permalink
Merge pull request #3164 from quantified-uncertainty/dockerize-hub
Browse files Browse the repository at this point in the history
First pass at dockerfile
  • Loading branch information
berekuk authored Apr 12, 2024
2 parents 465510b + 6ea9b83 commit cc5b6af
Show file tree
Hide file tree
Showing 74 changed files with 194 additions and 88 deletions.
49 changes: 49 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Ignore node_modules directories
node_modules
**/node_modules

# Ignore .cache directories
**/.cache

# Ignore .DS_Store files
**/.DS_Store

# Ignore .sync.ffs_db directories
**/.sync.ffs_db

# Ignore .direnv directories
**/.direnv

# Ignore .log files
**/*.log

# Ignore .turbo directories
**/.turbo
.turbo

# Ignore dist directories
**/dist

# Ignore .next directories
**/.next

# Ignore specific .vscode files
.vscode/_.code-workspace
.vscode/settings.json

*.tsbuildinfo

# Ignore .env files
.env
.env.test

# Ignore tsconfig.tsbuildinfo file in the current directory
/tsconfig.tsbuildinfo

# Ignore .next directory in the current directory
/.next

# Ignore .vscode directory in the current directory
/.vscode

/.git
2 changes: 1 addition & 1 deletion packages/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@
"build:ts": "tsc -b",
"build:css": "postcss ./src/styles/full.css -o ./dist/full.css && postcss ./src/styles/common.css -o ./dist/common.css",
"build:lezer": "cd ./src/components/CodeEditor/languageSupport; mkdir -p generated; lezer-generator ./squiggle.grammar --output generated/squiggle.ts",
"build": "pnpm run build:lezer && pnpm run build:ts && pnpm run build:css",
"build:storybook": "storybook build",
"build": "pnpm run build:lezer && pnpm run build:ts && pnpm run build:css && pnpm run build:storybook",
"lint": "pnpm lint:prettier && pnpm eslint",
"lint:prettier": "prettier --check .",
"eslint": "eslint --ignore-path .gitignore .",
Expand Down
1 change: 0 additions & 1 deletion packages/components/turbo.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
"build": {
"outputs": [
"dist/**",
"storybook-static/**",
"src/components/CodeEditor/languageSupport/generated/**"
]
},
Expand Down
2 changes: 1 addition & 1 deletion packages/components/vercel.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"buildCommand": "PLATFORM=vercel npx turbo build",
"buildCommand": "PLATFORM=vercel npx turbo build:storybook",
"outputDirectory": "storybook-static",
"ignoreCommand": "npx turbo-ignore || ../../skip-dependabot.sh"
}
49 changes: 49 additions & 0 deletions packages/hub/dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Should be invoked from monorepo's root.

# Use the official Node.js 20 image as the base
ARG DOCKER_NODE_VERSION=20-bookworm-slim

FROM node:$DOCKER_NODE_VERSION AS node-with-openssl

# Install OpenSSL - necessary for Prisma client
# Mount caches via https://stackoverflow.com/a/72851168
RUN --mount=type=cache,id=apt-lists,target=/var/lib/apt/lists,sharing=locked \
--mount=type=cache,id=apt-cache,target=/var/cache/apt,sharing=locked \
rm -f /etc/apt/apt.conf.d/docker-clean \
&& apt-get update \
&& apt-get install -y \
openssl
# If we ever need canvas for components, uncomment these:
# build-essential \
# libcairo2-dev \
# libpango1.0-dev \
# libjpeg-dev \
# libgif-dev \
# librsvg2-dev

# Build
FROM node-with-openssl AS build-stage
WORKDIR /build

# Install pnpm and turbo globally
RUN npm install -g pnpm

# Copy the entire monorepo to the working directory
COPY . .

# Install monorepo dependencies
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store/v3 pnpm install --frozen-lockfile

WORKDIR /build/packages/hub
ENV NODE_ENV=production

# TODO - turbo cache, either as volume or remote
RUN npx turbo run bundle --concurrency=1

FROM node-with-openssl AS run-stage
WORKDIR /app

COPY --from=build-stage /build/packages/hub/dist /app/dist
COPY --from=build-stage /build/node_modules/.pnpm/@prisma+client*/node_modules/.prisma/client/*.so.node /app/dist

CMD ["node", "dist/bundle/buildRecentModelRevision.js"]
2 changes: 2 additions & 0 deletions packages/hub/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"gen": "pnpm gen:prisma && pnpm gen:schema && pnpm gen:relay",
"gen:watch": "nodemon --watch src --ext ts,tsx,prisma --exec 'pnpm run gen'",
"build:ts": "pnpm gen && tsc",
"bundle": "esbuild ./src/scripts/buildRecentModelRevision.ts --format=cjs --platform=node --sourcemap --minify --bundle --outdir=./dist/bundle",
"build": "pnpm gen && __NEXT_PRIVATE_PREBUNDLED_REACT=next next build",
"lint": "prettier --check . && next lint",
"format": "prettier --write .",
Expand Down Expand Up @@ -82,6 +83,7 @@
"@types/relay-runtime": "^14.1.23",
"babel-plugin-relay": "^16.2.0",
"dotenv-cli": "^7.3.0",
"esbuild": "^0.20.1",
"eslint": "^8.57.0",
"eslint-config-next": "^14.1.0",
"graphql": "^16.8.1",
Expand Down
4 changes: 4 additions & 0 deletions packages/hub/turbo.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"pipeline": {
"build": {
"env": ["DATABASE_URL", "VERCEL_ENV"]
},
"bundle": {
"dependsOn": ["^build", "build:ts"],
"outputs": ["dist/bundle*"]
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { nrd, nrd0 } from "../../src/dist/SampleSetDist/bandwidth.js";
import { nrd, nrd0 } from "../../src/dists/SampleSetDist/bandwidth.js";

describe("Bandwidth", () => {
test("nrd0()", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as fc from "fast-check";

import { binaryOperations } from "../../src/dist/distOperations/index.js";
import { binaryOperations } from "../../src/dists/distOperations/index.js";
import { DivisionByZeroError } from "../../src/operationError.js";
import { getDefaultRng } from "../../src/rng/index.js";
import {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BaseDist } from "../../src/dist/BaseDist.js";
import { DistError } from "../../src/dist/DistError.js";
import { SampleSetDist } from "../../src/dist/SampleSetDist/index.js";
import { BaseDist } from "../../src/dists/BaseDist.js";
import { DistError } from "../../src/dists/DistError.js";
import { SampleSetDist } from "../../src/dists/SampleSetDist/index.js";
import { Env } from "../../src/index.js";
import { getDefaultRng } from "../../src/rng/index.js";
import * as Result from "../../src/utility/result.js";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ when things substantially change.
Also, there are some open comments in https://github.com/quantified-uncertainty/squiggle/pull/232 that haven't been addressed.
*/

import { binaryOperations } from "../../../src/dist/distOperations/index.js";
import { binaryOperations } from "../../../src/dists/distOperations/index.js";
import { getDefaultRng } from "../../../src/rng/index.js";
import * as Result from "../../../src/utility/result.js";
import {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ Details in https://squiggle-language.com/docs/internal/invariants/
Note: epsilon of 1e3 means the invariants are, in general, not being satisfied.
*/

import { BaseDist } from "../../../src/dist/BaseDist.js";
import { BaseDist } from "../../../src/dists/BaseDist.js";
import {
BinaryOperation,
binaryOperations,
} from "../../../src/dist/distOperations/index.js";
import { Env } from "../../../src/dist/env.js";
} from "../../../src/dists/distOperations/index.js";
import { Env } from "../../../src/dists/env.js";
import { getDefaultRng } from "../../../src/rng/index.js";
import {
env,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import range from "lodash/range.js";
import sum from "lodash/sum.js";
import sumBy from "lodash/sumBy.js";

import { kde } from "../../src/dist/SampleSetDist/kde.js";
import { kde } from "../../src/dists/SampleSetDist/kde.js";
import * as XYShape from "../../src/XYShape.js";

// KDE by definition, with triangular kernel max(0, |1-x|)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as fc from "fast-check";

import { logKde } from "../../src/dist/SampleSetDist/logKde.js";
import { logKde } from "../../src/dists/SampleSetDist/logKde.js";
import * as E_A_Floats from "../../src/utility/E_A_Floats.js";

const exampleSets = [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { mixture } from "../../src/dist/distOperations/index.js";
import { mixture } from "../../src/dists/distOperations/index.js";
import { getDefaultRng } from "../../src/rng/index.js";
import {
env,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { operationDistError } from "../../src/dist/DistError.js";
import * as distOperations from "../../src/dist/distOperations/index.js";
import { operationDistError } from "../../src/dists/DistError.js";
import * as distOperations from "../../src/dists/distOperations/index.js";
import {
DivisionByZeroError,
NegativeInfinityError,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { BaseDist } from "../../../src/dist/BaseDist.js";
import { distErrorToString } from "../../../src/dist/DistError.js";
import { BaseDist } from "../../../src/dists/BaseDist.js";
import { distErrorToString } from "../../../src/dists/DistError.js";
import {
logScoreDistAnswer,
mixture,
} from "../../../src/dist/distOperations/index.js";
} from "../../../src/dists/distOperations/index.js";
import { getDefaultRng } from "../../../src/rng/index.js";
import {
floatDist,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {
logScoreScalarAnswer,
mixture,
} from "../../../src/dist/distOperations/index.js";
} from "../../../src/dists/distOperations/index.js";
import { getDefaultRng } from "../../../src/rng/index.js";
import { env, mkPointMass, unpackResult } from "../../helpers/distHelpers.js";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import fc from "fast-check";
import flatten from "lodash/flatten.js";
import range from "lodash/range.js";

import { splitContinuousAndDiscrete as split } from "../../src/dist/SampleSetDist/splitContinuousAndDiscrete.js";
import { splitContinuousAndDiscrete as split } from "../../src/dists/SampleSetDist/splitContinuousAndDiscrete.js";

const makeTest = (params: {
name: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as SymbolicDist from "../../src/dist/SymbolicDist.js";
import * as SymbolicDist from "../../src/dists/SymbolicDist.js";
import * as E_A from "../../src/utility/E_A.js";
import * as E_A_Floats from "../../src/utility/E_A_Floats.js";
import * as Result from "../../src/utility/result.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/squiggle-lang/__tests__/fixtures/distFixtures.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as SymbolicDist from "../../src/dist/SymbolicDist.js";
import * as SymbolicDist from "../../src/dists/SymbolicDist.js";
import { unpackResult } from "../helpers/distHelpers.js";

export const normalDist5 = unpackResult(
Expand Down
4 changes: 2 additions & 2 deletions packages/squiggle-lang/__tests__/helpers/distHelpers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defaultEnv, Env } from "../../src/dist/env.js";
import * as SymbolicDist from "../../src/dist/SymbolicDist.js";
import { defaultEnv, Env } from "../../src/dists/env.js";
import * as SymbolicDist from "../../src/dists/SymbolicDist.js";
import * as Result from "../../src/utility/result.js";

export const env: Env = defaultEnv;
Expand Down
6 changes: 3 additions & 3 deletions packages/squiggle-lang/__tests__/reducer/frTypes_test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { PointSetDist } from "../../src/dist/PointSetDist.js";
import { SampleSetDist } from "../../src/dist/SampleSetDist/index.js";
import { Normal } from "../../src/dist/SymbolicDist.js";
import { PointSetDist } from "../../src/dists/PointSetDist.js";
import { SampleSetDist } from "../../src/dists/SampleSetDist/index.js";
import { Normal } from "../../src/dists/SymbolicDist.js";
import {
frAny,
frArray,
Expand Down
2 changes: 1 addition & 1 deletion packages/squiggle-lang/src/cli/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { promises as fs } from "fs";
import isFinite from "lodash/isFinite.js";
import path from "path";

import { Env } from "../dist/env.js";
import { Env } from "../dists/env.js";
import { SqLinker } from "../public/SqLinker.js";
import { SqProject } from "../public/SqProject/index.js";
import { bold, red } from "./colors.js";
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion packages/squiggle-lang/src/errors/messages.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DistError, distErrorToString } from "../dist/DistError.js";
import { DistError, distErrorToString } from "../dists/DistError.js";
import { OperationError } from "../operationError.js";

// Common error types.
Expand Down
2 changes: 1 addition & 1 deletion packages/squiggle-lang/src/fr/danger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import jstat from "jstat";

import * as SymbolicDist from "../dist/SymbolicDist.js";
import * as SymbolicDist from "../dists/SymbolicDist.js";
import { REArgumentError, REOther } from "../errors/messages.js";
import { SDate } from "../index.js";
import { FRFunction, makeFnExample } from "../library/registry/core.js";
Expand Down
4 changes: 2 additions & 2 deletions packages/squiggle-lang/src/fr/dist.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { argumentError, otherError } from "../dist/DistError.js";
import * as SymbolicDist from "../dist/SymbolicDist.js";
import { argumentError, otherError } from "../dists/DistError.js";
import * as SymbolicDist from "../dists/SymbolicDist.js";
import { REDistributionError } from "../errors/messages.js";
import { FRFunction, makeFnExample } from "../library/registry/core.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
Expand Down
4 changes: 2 additions & 2 deletions packages/squiggle-lang/src/fr/distUtil.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { otherError } from "../dist/DistError.js";
import * as SymbolicDist from "../dist/SymbolicDist.js";
import { otherError } from "../dists/DistError.js";
import * as SymbolicDist from "../dists/SymbolicDist.js";
import { REDistributionError } from "../errors/messages.js";
import * as Result from "../utility/result.js";

Expand Down
6 changes: 3 additions & 3 deletions packages/squiggle-lang/src/fr/genericDist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import {
algebraicDiff,
algebraicProduct,
algebraicSum,
} from "../dist/distOperations/binaryOperations.js";
} from "../dists/distOperations/binaryOperations.js";
import {
BinaryOperation,
binaryOperations,
} from "../dist/distOperations/index.js";
import * as SymbolicDist from "../dist/SymbolicDist.js";
} from "../dists/distOperations/index.js";
import * as SymbolicDist from "../dists/SymbolicDist.js";
import { FRFunction } from "../library/registry/core.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
import {
Expand Down
6 changes: 3 additions & 3 deletions packages/squiggle-lang/src/fr/mixture.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BaseDist } from "../dist/BaseDist.js";
import { argumentError } from "../dist/DistError.js";
import * as distOperations from "../dist/distOperations/index.js";
import { BaseDist } from "../dists/BaseDist.js";
import { argumentError } from "../dists/DistError.js";
import * as distOperations from "../dists/distOperations/index.js";
import { REDistributionError } from "../errors/messages.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
import {
Expand Down
6 changes: 3 additions & 3 deletions packages/squiggle-lang/src/fr/pointset.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { xyShapeDistError } from "../dist/DistError.js";
import { PointSetDist } from "../dist/PointSetDist.js";
import { PointMass } from "../dist/SymbolicDist.js";
import { xyShapeDistError } from "../dists/DistError.js";
import { PointSetDist } from "../dists/PointSetDist.js";
import { PointMass } from "../dists/SymbolicDist.js";
import { REDistributionError } from "../errors/messages.js";
import { makeFnExample } from "../library/registry/core.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/squiggle-lang/src/fr/sampleset.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as SampleSetDist from "../dist/SampleSetDist/index.js";
import * as SampleSetDist from "../dists/SampleSetDist/index.js";
import { makeFnExample } from "../library/registry/core.js";
import {
FnDefinition,
Expand Down
6 changes: 3 additions & 3 deletions packages/squiggle-lang/src/fr/scoring.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BaseDist } from "../dist/BaseDist.js";
import * as distOperations from "../dist/distOperations/index.js";
import { Env } from "../dist/env.js";
import { BaseDist } from "../dists/BaseDist.js";
import * as distOperations from "../dists/distOperations/index.js";
import { Env } from "../dists/env.js";
import { REArgumentError, REDistributionError } from "../errors/messages.js";
import { makeFnExample } from "../library/registry/core.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/squiggle-lang/src/fr/sym.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as SymbolicDist from "../dist/SymbolicDist.js";
import * as SymbolicDist from "../dists/SymbolicDist.js";
import { FRFunction, makeFnExample } from "../library/registry/core.js";
import { makeDefinition } from "../library/registry/fnDefinition.js";
import {
Expand Down
Loading

0 comments on commit cc5b6af

Please sign in to comment.