Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion template/build_docker.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from template import make_template
from e2b import Template

tmp = make_template(kernels=["python", "javascript"])
tmp = make_template(kernels=["python", "javascript"], is_docker=True)
print(Template.to_dockerfile(tmp))
2 changes: 1 addition & 1 deletion template/build_prod.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
load_dotenv()

Template.build(
make_template(set_user_workdir=True),
make_template(),
alias="code-interpreter-v1",
cpu_count=2,
memory_mb=2048,
Expand Down
6 changes: 3 additions & 3 deletions template/build_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
load_dotenv()

Template.build(
make_template(kernels=["python", "javascript"], set_user_workdir=True),
make_template(kernels=["python", "javascript"]),
alias="code-interpreter-dev",
cpu_count=1,
memory_mb=1024,
cpu_count=2,
memory_mb=2048,
on_build_logs=default_build_logger(min_level="debug"),
)
4 changes: 2 additions & 2 deletions template/start-up.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ function start_jupyter_server() {
response=$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:8888/api/status")
done

cd /.server/
cd /root/.server/
.venv/bin/uvicorn main:app --host 0.0.0.0 --port 49999 --workers 1 --no-access-log --no-use-colors --timeout-keep-alive 640
}

echo "Starting Code Interpreter server..."
start_jupyter_server &
MATPLOTLIBRC=.config/matplotlib/.matplotlibrc jupyter server --IdentityProvider.token="" >/dev/null 2>&1
MATPLOTLIBRC=/root/.config/matplotlib/.matplotlibrc jupyter server --IdentityProvider.token="" >/dev/null 2>&1
24 changes: 17 additions & 7 deletions template/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@

def make_template(
kernels: list[str] = ["python", "r", "javascript", "deno", "bash", "java"],
set_user_workdir: bool = False,
is_docker: bool = False,
):
enabled_kernels = set(["python", "javascript"] + kernels)
# Start with base template
template = (
Template()
.from_image("python:3.12")
.set_user("root")
.set_workdir("/")
.set_workdir("/root")
Comment thread
mishushakov marked this conversation as resolved.
.set_envs(
{
"PIP_DEFAULT_TIMEOUT": "100",
Expand Down Expand Up @@ -117,12 +117,10 @@ def make_template(
)
)

if set_user_workdir:
template = template.set_user("user").set_workdir("/home/user")

# Copy configuration files
template = (
template.copy("matplotlibrc", ".config/matplotlib/.matplotlibrc")
template
.copy("matplotlibrc", ".config/matplotlib/.matplotlibrc")
.copy("start-up.sh", ".jupyter/start-up.sh")
.run_cmd("chmod +x .jupyter/start-up.sh")
.copy("jupyter_server_config.py", ".jupyter/")
Expand All @@ -131,6 +129,18 @@ def make_template(
.copy("startup_scripts", ".ipython/profile_default/startup")
)

if is_docker:
# create user user and /home/user
template = template.run_cmd("useradd -m user")
template = template.run_cmd("mkdir -p /home/user")
template = template.run_cmd("chown -R user:user /home/user")
# add to sudoers
template = template.run_cmd("echo 'user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers")
# own everything in /root to user
template = template.run_cmd("chown -R user:user /root")

template = template.set_user("user").set_workdir("/home/user")
Comment thread
mishushakov marked this conversation as resolved.

return template.set_start_cmd(
".jupyter/start-up.sh", wait_for_url("http://localhost:49999/health")
"sudo /root/.jupyter/start-up.sh", wait_for_url("http://localhost:49999/health")
Comment thread
mishushakov marked this conversation as resolved.
)
Loading