@@ -229,6 +229,17 @@ exports.start = async ({image, username, folder, resultStream, existing = []}) =
229229 }
230230 const additionalLabels = config . labels || { } ;
231231
232+ const configMiddlewares = Object . keys ( additionalLabels )
233+ // we want all middlewares
234+ . filter ( label => label . startsWith ( 'traefik.http.middlewares.' ) )
235+ // map them to name with @docker postfix
236+ . map ( label => {
237+ const [ middlewareName ] = label . replace ( 'traefik.http.middlewares.' , '' ) . split ( '.' ) ;
238+ return `${ middlewareName } @docker` ;
239+ } )
240+ // concat with other middlewares from config if present
241+ . concat ( config . middlewares || [ ] ) ;
242+
232243 const Labels = Object . assign ( { } , additionalLabels , {
233244 'exoframe.deployment' : name ,
234245 'exoframe.user' : username ,
@@ -238,7 +249,7 @@ exports.start = async ({image, username, folder, resultStream, existing = []}) =
238249 } ) ;
239250
240251 // create middlewares array
241- const middlewares = [ ] ;
252+ const middlewares = configMiddlewares || [ ] ;
242253
243254 // if we have letsencrypt enabled - enable https redirect
244255 if ( serverConfig . letsencrypt && ( config . letsencrypt || config . letsencrypt === undefined ) ) {
@@ -289,7 +300,7 @@ exports.start = async ({image, username, folder, resultStream, existing = []}) =
289300
290301 // remove or stringify all middlewares
291302 if ( middlewares . length > 0 ) {
292- Labels [ `traefik.http.routers.${ name } .middlewares` ] = middlewares . join ( ',' ) ;
303+ Labels [ `traefik.http.routers.${ name } .middlewares` ] = [ ... new Set ( middlewares ) ] . join ( ',' ) ;
293304 }
294305
295306 // run startFromParams via plugins if available
0 commit comments