@@ -14,23 +14,23 @@ Use the official installation script from [get.docker.com](https://get.docker.co
1414// template.ts
1515import { Template } from ' e2b'
1616
17- export const template = Template ()
18- .fromUbuntuImage (' 25 .04' )
19- .runCmd (' curl -fsSL https://get.docker.com | sudo sh' )
20- .runCmd (' sudo docker run --rm hello-world' )
21- ```
17+ export const template = Template ()
18+ .fromUbuntuImage (' 24 .04' )
19+ .runCmd (' curl -fsSL https://get.docker.com | sudo sh' )
20+ .runCmd (' sudo docker run --rm hello-world' )
21+ ```
2222
2323``` python Python
2424# template.py
2525from e2b import Template
2626
27- template = (
28- Template()
29- .from_ubuntu_image(" 25 .04" )
30- .run_cmd(" curl -fsSL https://get.docker.com | sudo sh" )
31- .run_cmd(" sudo docker run --rm hello-world" )
32- )
33- ```
27+ template = (
28+ Template()
29+ .from_ubuntu_image(" 24 .04" )
30+ .run_cmd(" curl -fsSL https://get.docker.com | sudo sh" )
31+ .run_cmd(" sudo docker run --rm hello-world" )
32+ )
33+ ```
3434</CodeGroup >
3535
3636### Build
@@ -97,11 +97,7 @@ sbx.kill()
9797
9898This example installs Docker and Docker Compose, then validates the setup with a Compose version check and a sample Compose run.
9999
100- <Note >
101- Run Docker and Docker Compose commands as ` root ` in this setup. The Docker daemon socket is not accessible to the default ` user ` account.
102- </Note >
103-
104- ### Template
100+ ### Template
105101
106102Create a new file named ` template-compose.ts ` (or ` template_compose.py ` ).
107103
@@ -112,13 +108,14 @@ import { Template } from 'e2b'
112108
113109export const composeTemplate = Template ()
114110 .fromUbuntuImage (' 24.04' )
115- .runCmd ([
116- ' set -euxo pipefail' ,
117- ' sudo apt-get update' ,
118- ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io' ,
119- ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-plugin || true' ,
120- ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-v2 || true' ,
121- ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose || true' ,
111+ .runCmd ([
112+ ' set -euxo pipefail' ,
113+ ' sudo apt-get update' ,
114+ ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io' ,
115+ ' sudo usermod -aG docker user' ,
116+ ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-plugin || true' ,
117+ ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-v2 || true' ,
118+ ' sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose || true' ,
122119 ' sudo docker compose version || sudo docker-compose --version' ,
123120 ])
124121```
@@ -131,13 +128,14 @@ compose_template = (
131128 Template()
132129 .from_ubuntu_image(" 24.04" )
133130 .run_cmd(
134- [
135- " set -euxo pipefail" ,
136- " sudo apt-get update" ,
137- " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io" ,
138- " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-plugin || true" ,
139- " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-v2 || true" ,
140- " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose || true" ,
131+ [
132+ " set -euxo pipefail" ,
133+ " sudo apt-get update" ,
134+ " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker.io" ,
135+ " sudo usermod -aG docker user" ,
136+ " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-plugin || true" ,
137+ " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose-v2 || true" ,
138+ " sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-compose || true" ,
141139 " sudo docker compose version || sudo docker-compose --version" ,
142140 ]
143141 )
@@ -188,10 +186,10 @@ BuildInfo(... name='docker-compose', alias='docker-compose', tags=['default'])
188186// sandbox-compose.ts
189187import { Sandbox } from ' e2b'
190188
191- const sbx = await Sandbox .create (' docker-compose' )
192-
193- await sbx .commands .run (' mkdir -p /tmp/docker-compose-test' , { user: ' root ' } )
194- await sbx .files .write (' /tmp/docker-compose-test/compose.yaml' , [
189+ const sbx = await Sandbox .create (' docker-compose' )
190+
191+ await sbx .commands .run (' mkdir -p /tmp/docker-compose-test' )
192+ await sbx .files .write (' /tmp/docker-compose-test/compose.yaml' , [
195193 ' services:' ,
196194 ' hello:' ,
197195 ' image: busybox:1.36' ,
@@ -211,11 +209,11 @@ elif docker-compose --version >/dev/null 2>&1; then
211209 docker-compose up --abort-on-container-exit --remove-orphans
212210 docker-compose down --remove-orphans -v
213211 echo "Docker Compose ran successfully"
214- else
215- echo "No compose command available"
216- exit 127
217- fi
218- ` , { user: ' root ' } )
212+ else
213+ echo "No compose command available"
214+ exit 127
215+ fi
216+ ` )
219217
220218console .log (result .stdout )
221219await sbx .kill ()
@@ -225,10 +223,10 @@ await sbx.kill()
225223# sandbox_compose.py
226224from e2b import Sandbox
227225
228- sbx = Sandbox.create(" docker-compose" )
229-
230- sbx.commands.run(" mkdir -p /tmp/docker-compose-test" , user = " root " )
231- sbx.files.write(
226+ sbx = Sandbox.create(" docker-compose" )
227+
228+ sbx.commands.run(" mkdir -p /tmp/docker-compose-test" )
229+ sbx.files.write(
232230 " /tmp/docker-compose-test/compose.yaml" ,
233231 """
234232services:
@@ -251,13 +249,12 @@ elif docker-compose --version >/dev/null 2>&1; then
251249 docker-compose up --abort-on-container-exit --remove-orphans
252250 docker-compose down --remove-orphans -v
253251 echo "Docker Compose ran successfully"
254- else
255- echo "No compose command available"
256- exit 127
257- fi
258- """ ,
259- user = " root" ,
260- )
252+ else
253+ echo "No compose command available"
254+ exit 127
255+ fi
256+ """ ,
257+ )
261258
262259print (result.stdout)
263260sbx.kill()
0 commit comments