@@ -87,13 +87,11 @@ func mergeServices(base, override []types.ServiceConfig) ([]types.ServiceConfig,
8787 for name , overrideService := range overrideServices {
8888 overrideService := overrideService
8989 if baseService , ok := baseServices [name ]; ok {
90- if err := mergo .Merge (& baseService , & overrideService , mergo .WithAppendSlice , mergo .WithOverride , mergo .WithTransformers (serviceSpecials )); err != nil {
91- return base , errors .Wrapf (err , "cannot merge service %s" , name )
90+ merged , err := _merge (& baseService , & overrideService )
91+ if err != nil {
92+ return nil , errors .Wrapf (err , "cannot merge service %s" , name )
9293 }
93- if len (overrideService .Command ) > 0 {
94- baseService .Command = overrideService .Command
95- }
96- baseServices [name ] = baseService
94+ baseServices [name ] = * merged
9795 continue
9896 }
9997 baseServices [name ] = overrideService
@@ -106,6 +104,19 @@ func mergeServices(base, override []types.ServiceConfig) ([]types.ServiceConfig,
106104 return services , nil
107105}
108106
107+ func _merge (baseService * types.ServiceConfig , overrideService * types.ServiceConfig ) (* types.ServiceConfig , error ) {
108+ if err := mergo .Merge (baseService , overrideService , mergo .WithAppendSlice , mergo .WithOverride , mergo .WithTransformers (serviceSpecials )); err != nil {
109+ return nil , err
110+ }
111+ if len (overrideService .Command ) > 0 {
112+ baseService .Command = overrideService .Command
113+ }
114+ if len (overrideService .Entrypoint ) > 0 {
115+ baseService .Entrypoint = overrideService .Entrypoint
116+ }
117+ return baseService , nil
118+ }
119+
109120func toServiceSecretConfigsMap (s interface {}) (map [interface {}]interface {}, error ) {
110121 secrets , ok := s .([]types.ServiceSecretConfig )
111122 if ! ok {
0 commit comments