Skip to content

Commit 1159186

Browse files
authored
Merge pull request #1 from PAIR-Systems-Inc/jupyter-kernels
add tutorial notebooks
2 parents ebf0b9f + 70ec3b5 commit 1159186

3 files changed

Lines changed: 83 additions & 23 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1111
curl wget git unzip gnupg ca-certificates software-properties-common \
1212
build-essential apt-transport-https sudo \
1313
python3 python3-venv python3-pip python3-dev \
14-
libffi-dev libssl-dev libpq-dev cargo \
15-
&& rm -rf /var/lib/apt/lists/*
14+
libffi-dev libssl-dev libpq-dev cargo
1615

1716
# Node.js 20
1817
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
19-
apt-get install -y nodejs && \
20-
rm -rf /var/lib/apt/lists/*
18+
apt-get install -y nodejs
2119

22-
# .NET SDK 8.0 (update to 9.0 if desired by changing the package name)
23-
RUN wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
24-
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb && \
25-
apt-get update && apt-get install -y dotnet-sdk-8.0 && \
26-
rm -rf /var/lib/apt/lists/*
20+
# .NET SDK 9.0
21+
RUN add-apt-repository ppa:dotnet/backports && \
22+
apt-get update && \
23+
apt-get install -y dotnet-sdk-9.0
2724

2825
#Go
29-
ARG GO_VERSION=1.22.5
26+
ARG GO_VERSION=1.24.6
3027
RUN curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz -o /tmp/go.tgz \
3128
&& rm -rf /usr/local/go \
3229
&& tar -C /usr/local -xzf /tmp/go.tgz \
@@ -37,10 +34,8 @@ ENV PATH=$GOROOT/bin:$GOPATH/bin:$PATH
3734
# quick sanity
3835
RUN go version
3936

40-
#Java
41-
4237
# ---- Java (OpenJDK 21) ----
43-
RUN apt-get update && apt-get install -y --no-install-recommends \
38+
RUN apt-get install -y --no-install-recommends \
4439
openjdk-21-jdk \
4540
&& rm -rf /var/lib/apt/lists/*
4641
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
@@ -66,16 +61,44 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK=1 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
6661

6762
# Global Python deps
6863
RUN pip install --no-cache-dir --break-system-packages \
69-
goodmem_client openai requests python-dotenv
64+
goodmem_client openai requests python-dotenv \
65+
jupyter lab
66+
67+
# Dotnet Interactive (for Jupyter)
68+
RUN dotnet tool install --global Microsoft.dotnet-interactive
69+
ENV PATH="/root/.dotnet/tools:${PATH}"
70+
RUN dotnet interactive jupyter install
71+
72+
# IJavascript (Node.js kernel for Jupyter)
73+
RUN npm config set prefix $HOME
74+
RUN npm install -g ijavascript
75+
ENV PATH="/root/bin:${PATH}"
76+
RUN ijsinstall
77+
78+
# JJava (Java kernel for Jupyter)
79+
RUN curl -fsSL https://github.com/dflib/jjava/releases/download/1.0-a5/jjava-1.0-a5-kernelspec.zip -o /tmp/jjava.zip && \
80+
unzip -q /tmp/jjava.zip -d /tmp/jjava-1.0-a5-kernelspec && \
81+
cd /tmp && \
82+
jupyter kernelspec install jjava-1.0-a5-kernelspec --user --name=java
83+
84+
# GONB (Go kernel for Jupyter)
85+
RUN go install github.com/janpfeifer/gonb@latest && \
86+
go install golang.org/x/tools/cmd/goimports@latest && \
87+
go install golang.org/x/tools/gopls@latest
88+
RUN gonb --install
89+
90+
# APT clean up
91+
RUN rm -rf /var/lib/apt/lists/*
7092

7193
# Dev user
72-
RUN useradd -m -s /bin/bash vscode && \
73-
echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode-nopasswd && \
74-
chmod 0440 /etc/sudoers.d/vscode-nopasswd && \
75-
mkdir -p /home/vscode/.goodmem/data/database && \
76-
chown -R vscode:vscode /home/vscode/.goodmem
77-
78-
USER vscode
94+
# EDIT: DISABLED for now to avoid permission issues with mounted volumes
95+
# RUN useradd -m -s /bin/bash vscode && \
96+
# echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode-nopasswd && \
97+
# chmod 0440 /etc/sudoers.d/vscode-nopasswd && \
98+
# mkdir -p /home/vscode/.goodmem/data/database && \
99+
# chown -R vscode:vscode /home/vscode/.goodmem
100+
101+
# USER vscode
79102

80103
# Use Codespaces default; the repo will be mounted at /workspaces/<repo>
81104
WORKDIR /workspaces

.devcontainer/devcontainer.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
"name": "GoodMem Dev Container",
33
"build": { "dockerfile": "Dockerfile" },
44

5-
"postCreateCommand": "bash .devcontainer/setup.sh",
6-
"postAttachCommand": "curl -s https://get.goodmem.ai | bash -s -- --prod-install --no-openai-embedder-registration",
5+
"postCreateCommand": "bash .devcontainer/setup.sh && bash .devcontainer/post-setup.sh",
76

87
"features": {
98
"ghcr.io/devcontainers/features/docker-in-docker:2": {}

.devcontainer/post-setup.sh

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/bin/bash
2+
set -e
3+
4+
echo "=== Post-setup script started ==="
5+
6+
# 1. Install GoodMem
7+
echo "Installing GoodMem..."
8+
curl -s https://get.goodmem.ai | bash -s -- --prod-install --no-openai-embedder-registration
9+
10+
# 2. Extract API key and add to ~/.bashrc
11+
echo "Configuring GoodMem API key..."
12+
if [ -f ~/.goodmem/config.json ]; then
13+
API_KEY=$(grep -o '"api_key"[[:space:]]*:[[:space:]]*"[^"]*"' ~/.goodmem/config.json | cut -d'"' -f4)
14+
if [ -n "$API_KEY" ]; then
15+
if ! grep -q "GOODMEM_API_KEY" ~/.bashrc; then
16+
echo "export GOODMEM_API_KEY=\"$API_KEY\"" >> ~/.bashrc
17+
echo "Added GOODMEM_API_KEY to ~/.bashrc"
18+
else
19+
echo "GOODMEM_API_KEY already exists in ~/.bashrc"
20+
fi
21+
else
22+
echo "Warning: Could not extract api_key from config.json"
23+
fi
24+
else
25+
echo "Warning: ~/.goodmem/config.json not found"
26+
fi
27+
28+
# 3. Clone the GoodMem repository
29+
echo "Cloning GoodMem repository..."
30+
GOODMEM_REPO_DIR="$HOME/goodmem"
31+
if [ ! -d "$GOODMEM_REPO_DIR" ]; then
32+
git clone https://github.com/PAIR-Systems-Inc/goodmem.git "$GOODMEM_REPO_DIR"
33+
echo "GoodMem repository cloned to $GOODMEM_REPO_DIR"
34+
else
35+
echo "GoodMem repository already exists at $GOODMEM_REPO_DIR"
36+
fi
37+
38+
echo "=== Post-setup script completed ==="

0 commit comments

Comments
 (0)