Skip to content

Commit a0f9ed1

Browse files
committed
feat(manage env on docker swarm services)
1 parent d56fbcb commit a0f9ed1

4 files changed

Lines changed: 437 additions & 0 deletions

File tree

internal/dao/docker.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,10 @@ func (d *DockerClient) GetServiceEnv(id string) ([]string, error) {
379379
return d.Service.GetEnv(id)
380380
}
381381

382+
func (d *DockerClient) SetServiceEnv(id string, env []string) error {
383+
return d.Service.SetEnv(id, env)
384+
}
385+
382386
func (d *DockerClient) GetServiceSecrets(id string) ([]*swarm.SecretReference, error) {
383387
return d.Service.GetSecrets(id)
384388
}

internal/dao/swarm/service/service.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,22 @@ func (m *Manager) GetEnv(id string) ([]string, error) {
240240
return service.Spec.TaskTemplate.ContainerSpec.Env, nil
241241
}
242242

243+
func (m *Manager) SetEnv(id string, env []string) error {
244+
service, _, err := m.cli.ServiceInspectWithRaw(m.ctx, id, swarm.ServiceInspectOptions{})
245+
if err != nil {
246+
return err
247+
}
248+
249+
if service.Spec.TaskTemplate.ContainerSpec == nil {
250+
return fmt.Errorf("service has no container spec")
251+
}
252+
253+
service.Spec.TaskTemplate.ContainerSpec.Env = env
254+
255+
_, err = m.cli.ServiceUpdate(m.ctx, id, service.Version, service.Spec, swarm.ServiceUpdateOptions{})
256+
return err
257+
}
258+
243259
func (m *Manager) GetSecrets(id string) ([]*swarm.SecretReference, error) {
244260
service, _, err := m.cli.ServiceInspectWithRaw(m.ctx, id, swarm.ServiceInspectOptions{})
245261
if err != nil {

0 commit comments

Comments
 (0)