Skip to content

Commit 9ecefbe

Browse files
committed
Pull busybox image if we need to
1 parent 9eb28e4 commit 9ecefbe

File tree

3 files changed

+38
-24
lines changed

3 files changed

+38
-24
lines changed

provider/docker/docker_provider.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type Provider struct {
2626
dockerNetworkName string
2727
networkMu sync.RWMutex
2828
listeners map[string]Listeners
29+
builderImageName string
2930
}
3031

3132
func NewDockerProvider(ctx context.Context, logger *zap.Logger, providerName string, dockerOpts ...client.Opt) (*Provider, error) {
@@ -41,10 +42,11 @@ func NewDockerProvider(ctx context.Context, logger *zap.Logger, providerName str
4142
}
4243

4344
dockerProvider := &Provider{
44-
dockerClient: dockerClient,
45-
listeners: map[string]Listeners{},
46-
logger: logger.Named("docker_provider"),
47-
name: providerName,
45+
dockerClient: dockerClient,
46+
listeners: map[string]Listeners{},
47+
logger: logger.Named("docker_provider"),
48+
name: providerName,
49+
builderImageName: "busybox:latest",
4850
}
4951

5052
dockerProvider.dockerNetworkName = fmt.Sprintf("petri-network-%s", util.RandomString(5))

provider/docker/task.go

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,8 @@ import (
2323
func (p *Provider) CreateTask(ctx context.Context, logger *zap.Logger, definition provider.TaskDefinition) (string, error) {
2424
logger = logger.Named("docker_provider")
2525

26-
_, _, err := p.dockerClient.ImageInspectWithRaw(ctx, definition.Image.Image)
27-
if err != nil {
28-
logger.Info("image not found, pulling", zap.String("image", definition.Image.Image))
29-
if err := p.pullImage(ctx, definition); err != nil {
30-
return "", err
31-
}
26+
if err := p.pullImage(ctx, definition.Image.Image); err != nil {
27+
return "", err
3228
}
3329

3430
portSet := convertTaskDefinitionPortsToPortSet(definition)
@@ -99,18 +95,18 @@ func (p *Provider) CreateTask(ctx context.Context, logger *zap.Logger, definitio
9995
return createdContainer.ID, nil
10096
}
10197

102-
func (p *Provider) pullImage(ctx context.Context, definition provider.TaskDefinition) error {
103-
p.logger.Info("pulling image", zap.String("image", definition.Image.Image))
104-
resp, err := p.dockerClient.ImagePull(ctx, definition.Image.Image, types.ImagePullOptions{})
98+
func (p *Provider) pullImage(ctx context.Context, imageName string) error {
99+
_, _, err := p.dockerClient.ImageInspectWithRaw(ctx, imageName)
105100
if err != nil {
106-
return err
107-
}
108-
109-
defer resp.Close()
110-
// throw away the image pull stdout response
111-
_, err = io.Copy(io.Discard, resp)
101+
p.logger.Info("image not found, pulling", zap.String("image", imageName))
102+
resp, err := p.dockerClient.ImagePull(ctx, imageName, types.ImagePullOptions{})
103+
if err != nil {
104+
return err
105+
}
106+
defer resp.Close()
112107

113-
if err != nil {
108+
// throw away the image pull stdout response
109+
_, err = io.Copy(io.Discard, resp)
114110
return err
115111
}
116112
return nil

provider/docker/volume.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,16 @@ func (p *Provider) WriteFile(ctx context.Context, id, relPath string, content []
7171

7272
containerName := fmt.Sprintf("petri-writefile-%d", time.Now().UnixNano())
7373

74+
if err := p.pullImage(ctx, p.builderImageName); err != nil {
75+
return err
76+
}
77+
7478
logger.Debug("creating writefile container")
7579

7680
cc, err := p.dockerClient.ContainerCreate(
7781
ctx,
7882
&container.Config{
79-
Image: "busybox:latest",
83+
Image: p.builderImageName,
8084

8185
Entrypoint: []string{"sh", "-c"},
8286
Cmd: []string{
@@ -202,12 +206,16 @@ func (p *Provider) ReadFile(ctx context.Context, id, relPath string) ([]byte, er
202206

203207
containerName := fmt.Sprintf("petri-getfile-%d", time.Now().UnixNano())
204208

209+
if err := p.pullImage(ctx, p.builderImageName); err != nil {
210+
return nil, err
211+
}
212+
205213
logger.Debug("creating getfile container")
206214

207215
cc, err := p.dockerClient.ContainerCreate(
208216
ctx,
209217
&container.Config{
210-
Image: "busybox:latest",
218+
Image: p.builderImageName,
211219

212220
Labels: map[string]string{
213221
providerLabelName: p.name,
@@ -290,10 +298,14 @@ func (p *Provider) DownloadDir(ctx context.Context, id, relPath, localPath strin
290298

291299
logger.Debug("creating getdir container")
292300

301+
if err := p.pullImage(ctx, p.builderImageName); err != nil {
302+
return err
303+
}
304+
293305
cc, err := p.dockerClient.ContainerCreate(
294306
ctx,
295307
&container.Config{
296-
Image: "busybox:latest",
308+
Image: p.builderImageName,
297309

298310
Labels: map[string]string{
299311
providerLabelName: p.name,
@@ -370,12 +382,16 @@ func (p *Provider) SetVolumeOwner(ctx context.Context, volumeName, uid, gid stri
370382

371383
containerName := fmt.Sprintf("petri-setowner-%d", time.Now().UnixNano())
372384

385+
if err := p.pullImage(ctx, p.builderImageName); err != nil {
386+
return err
387+
}
388+
373389
logger.Debug("creating volume-owner container")
374390

375391
cc, err := p.dockerClient.ContainerCreate(
376392
ctx,
377393
&container.Config{
378-
Image: "busybox:latest",
394+
Image: p.builderImageName,
379395
Entrypoint: []string{"sh", "-c"},
380396
Cmd: []string{
381397
`chown "$2:$3" "$1" && chmod 0700 "$1"`,

0 commit comments

Comments
 (0)