457457</ li >
458458
459459 < li class ="md-nav__item ">
460- < a href ="#2-start-two-stacks " class ="md-nav__link ">
460+ < a href ="#2-front-proxy " class ="md-nav__link ">
461461 < span class ="md-ellipsis ">
462- 2. Start two Stacks
463- </ span >
464- </ a >
465-
466- </ li >
467-
468- < li class ="md-nav__item ">
469- < a href ="#3-front-proxy " class ="md-nav__link ">
470- < span class ="md-ellipsis ">
471- 3. Front Proxy
462+ 2. Front Proxy
472463 </ span >
473464 </ a >
474465
549540</ li >
550541
551542 < li class ="md-nav__item ">
552- < a href ="#2-start-two-stacks " class ="md-nav__link ">
553- < span class ="md-ellipsis ">
554- 2. Start two Stacks
555- </ span >
556- </ a >
557-
558- </ li >
559-
560- < li class ="md-nav__item ">
561- < a href ="#3-front-proxy " class ="md-nav__link ">
543+ < a href ="#2-front-proxy " class ="md-nav__link ">
562544 < span class ="md-ellipsis ">
563- 3 . Front Proxy
545+ 2 . Front Proxy
564546 </ span >
565547 </ a >
566548
@@ -620,23 +602,26 @@ <h2 id="1-caddyfile">1. Caddyfile</h2>
620602< span class ="w "> </ span > < span class ="nt "> user_data</ span > < span class ="p "> :</ span >
621603< span class ="w "> </ span > < span class ="nt "> name</ span > < span class ="p "> :</ span > < span class ="w "> </ span > < span class ="l l-Scalar l-Scalar-Plain "> user-data</ span >
622604</ code > </ pre > </ div >
623- < h2 id ="2-start-two-stacks "> 2. Start two Stacks</ h2 >
624- < p > On the server, bring up two stacks, < code > blue</ code > and < code > green</ code > :</ p >
625- < div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > compose< span class ="w "> </ span > -p< span class ="w "> </ span > blue< span class ="w "> </ span > up< span class ="w "> </ span > -d
626- docker< span class ="w "> </ span > compose< span class ="w "> </ span > -p< span class ="w "> </ span > green< span class ="w "> </ span > up< span class ="w "> </ span > -d
627- </ code > </ pre > </ div >
628- < h2 id ="3-front-proxy "> 3. Front Proxy</ h2 >
605+ < h2 id ="2-front-proxy "> 2. Front Proxy</ h2 >
629606< p > The front proxy is a single Caddy container that binds < code > :80</ code > and < code > :443</ code > on the
630607server and routes requests into either the Blue or Green stack.</ p >
631608< p > On the server, create a simple < code > Caddyfile</ code > :</ p >
632- < div class ="highlight "> < span class ="filename "> Caddyfile</ span > < pre > < span > </ span > < code > api.myapp.com reverse_proxy blue_caddy:80
609+ < div class ="highlight "> < span class ="filename "> Caddyfile</ span > < pre > < span > </ span > < code > api.myapp.com {
610+ reverse_proxy blue_caddy:80
611+ }
633612
634613# Optionally point a second hostname to the idle stack for testing
635- next.myapp.com reverse_proxy blue_caddy:80
614+ next.myapp.com {
615+ reverse_proxy green_caddy:80
616+ }
636617</ code > </ pre > </ div >
637618< p > The front proxy manages TLS, so give it a persistent volume for certificates:</ p >
638619< div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > volume< span class ="w "> </ span > create< span class ="w "> </ span > caddy_data
639620</ code > </ pre > </ div >
621+ < p > Create networks for the two stacks:</ p >
622+ < div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > network< span class ="w "> </ span > create< span class ="w "> </ span > blue_default
623+ docker< span class ="w "> </ span > network< span class ="w "> </ span > create< span class ="w "> </ span > green_default
624+ </ code > </ pre > </ div >
640625< p > Start the proxy and attach it to both networks:</ p >
641626< div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > run< span class ="w "> </ span > -d< span class ="w "> </ span > < span class ="se "> \</ span >
642627< span class ="w "> </ span > --name< span class ="w "> </ span > front-proxy< span class ="w "> </ span > < span class ="se "> \</ span >
@@ -653,8 +638,13 @@ <h2 id="4-deploying">4. Deploying</h2>
653638docker< span class ="w "> </ span > compose< span class ="w "> </ span > -p< span class ="w "> </ span > green< span class ="w "> </ span > up< span class ="w "> </ span > -d
654639</ code > </ pre > </ div >
655640< p > Edit the front proxy's config to flip traffic:</ p >
656- < div class ="highlight "> < span class ="filename "> Caddyfile</ span > < pre > < span > </ span > < code > api.myapp.com reverse_proxy green_caddy:80
657- next.myapp.com reverse_proxy blue_caddy:80
641+ < div class ="highlight "> < span class ="filename "> Caddyfile</ span > < pre > < span > </ span > < code > api.myapp.com {
642+ reverse_proxy green_caddy:80
643+ }
644+
645+ next.myapp.com {
646+ reverse_proxy blue_caddy:80
647+ }
658648</ code > </ pre > </ div >
659649< p > Restart Caddy:</ p >
660650< div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > < span class ="nb "> exec</ span > < span class ="w "> </ span > front-proxy< span class ="w "> </ span > caddy< span class ="w "> </ span > reload
0 commit comments