Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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_ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from template import make_template

Template.build(
make_template(set_user_workdir=True),
make_template(),
alias=os.environ["E2B_TESTS_TEMPLATE"],
cpu_count=2,
memory_mb=2048,
Expand Down
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
27 changes: 18 additions & 9 deletions template/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@

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")
.set_envs(
{
"PIP_DEFAULT_TIMEOUT": "100",
"PIP_DISABLE_PIP_VERSION_CHECK": "1",
"PIP_NO_CACHE_DIR": "1",
"JUPYTER_CONFIG_PATH": ".jupyter",
"IPYTHON_CONFIG_PATH": ".ipython",
"SERVER_PATH": ".server",
"JUPYTER_CONFIG_PATH": "/root/.jupyter",
"IPYTHON_CONFIG_PATH": "/root/.ipython",
"SERVER_PATH": "/root/.server",
"JAVA_VERSION": "11",
"JAVA_HOME": "/usr/lib/jvm/jdk-${JAVA_VERSION}",
"IJAVA_VERSION": "1.3.0",
Expand Down Expand Up @@ -117,9 +117,6 @@ 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")
Expand All @@ -131,6 +128,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"
)

template = template.set_user("user").set_workdir("/home/user")

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")
)