@@ -399,7 +399,8 @@ func (s *composeService) createContainer(ctx context.Context, project *types.Pro
399399 w := progress .ContextWriter (ctx )
400400 eventName := "Container " + name
401401 w .Event (progress .CreatingEvent (eventName ))
402- container , err = s .createMobyContainer (ctx , project , service , name , number , nil , autoRemove , useNetworkAliases , attachStdin , w )
402+ container , err = s .createMobyContainer (ctx , project , service , name , number , nil ,
403+ autoRemove , useNetworkAliases , attachStdin , w , mergeLabels (service .Labels , service .CustomLabels ))
403404 if err != nil {
404405 return
405406 }
@@ -424,8 +425,9 @@ func (s *composeService) recreateContainer(ctx context.Context, project *types.P
424425 }
425426 name := getContainerName (project .Name , service , number )
426427 tmpName := fmt .Sprintf ("%s_%s" , replaced .ID [:12 ], name )
427- service .CustomLabels [api .ContainerReplaceLabel ] = replaced .ID
428- created , err = s .createMobyContainer (ctx , project , service , tmpName , number , inherited , false , true , false , w )
428+ created , err = s .createMobyContainer (ctx , project , service , tmpName , number , inherited ,
429+ false , true , false , w ,
430+ mergeLabels (service .Labels , service .CustomLabels ).Add (api .ContainerReplaceLabel , replaced .ID ))
429431 if err != nil {
430432 return created , err
431433 }
@@ -475,10 +477,19 @@ func (s *composeService) startContainer(ctx context.Context, container moby.Cont
475477 return nil
476478}
477479
478- func (s * composeService ) createMobyContainer (ctx context.Context , project * types.Project , service types.ServiceConfig ,
479- name string , number int , inherit * moby.Container , autoRemove bool , useNetworkAliases bool , attachStdin bool , w progress.Writer ) (moby.Container , error ) {
480+ func (s * composeService ) createMobyContainer (ctx context.Context ,
481+ project * types.Project ,
482+ service types.ServiceConfig ,
483+ name string ,
484+ number int ,
485+ inherit * moby.Container ,
486+ autoRemove , useNetworkAliases , attachStdin bool ,
487+ w progress.Writer ,
488+ labels types.Labels ,
489+ ) (moby.Container , error ) {
480490 var created moby.Container
481- containerConfig , hostConfig , networkingConfig , err := s .getCreateOptions (ctx , project , service , number , inherit , autoRemove , attachStdin )
491+ containerConfig , hostConfig , networkingConfig , err := s .getCreateOptions (ctx , project , service , number , inherit ,
492+ autoRemove , attachStdin , labels )
482493 if err != nil {
483494 return created , err
484495 }
@@ -725,3 +736,13 @@ func (s *composeService) startService(ctx context.Context, project *types.Projec
725736 }
726737 return nil
727738}
739+
740+ func mergeLabels (ls ... types.Labels ) types.Labels {
741+ merged := types.Labels {}
742+ for _ , l := range ls {
743+ for k , v := range l {
744+ merged [k ] = v
745+ }
746+ }
747+ return merged
748+ }
0 commit comments