@@ -2125,23 +2125,35 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
21252125class ="ectt-1200 ">  </ span > < span style ="color:#000000 "> < span
21262126class ="ectt-1200 "> SQLALCHEMY_DATABASE_URI</ span > </ span > < span style ="color:#000000 "> < span
21272127class ="ectt-1200 "> :</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
2128+ class ="ectt-1200 "> "</ span > </ span > < span style ="color:#000000 "> < span
21282129class ="ectt-1200 "> postgresql</ span > </ span > < span style ="color:#000000 "> < span
2129- class ="ectt-1200 "> ://</ span > </ span > < span style ="color:#000000 "> < span
2130+ class ="ectt-1200 "> :\</ span > </ span >
2131+ < span class ="label "> < a
2132+ id ="x1-25016r16 "> </ a > </ span > < span
2133+ class ="ectt-1200 ">  </ span > < span
2134+ class ="ectt-1200 ">  </ span > < span
2135+ class ="ectt-1200 ">  </ span > < span
2136+ class ="ectt-1200 ">  </ span > < span
2137+ class ="ectt-1200 ">  </ span > < span
2138+ class ="ectt-1200 ">  </ span > < span
2139+ class ="ectt-1200 ">  </ span > < span style ="color:#000000 "> < span
2140+ class ="ectt-1200 "> //</ span > </ span > < span style ="color:#000000 "> < span
21302141class ="ectt-1200 "> administrator</ span > </ span > < span style ="color:#000000 "> < span
21312142class ="ectt-1200 "> :</ span > </ span > < span style ="color:#000000 "> < span
21322143class ="ectt-1200 "> verySecretPassword@database</ span > </ span > < span style ="color:#000000 "> < span
21332144class ="ectt-1200 "> :5432/</ span > </ span > < span style ="color:#000000 "> < span
2134- class ="ectt-1200 "> todo</ span > </ span >
2145+ class ="ectt-1200 "> todo</ span > </ span > < span style ="color:#000000 "> < span
2146+ class ="ectt-1200 "> "</ span > </ span >
21352147< span class ="label "> < a
2136- id ="x1-25016r16 "> </ a > </ span > < span
2148+ id ="x1-25017r17 "> </ a > </ span > < span
21372149class ="ectt-1200 ">  </ span > < span
21382150class ="ectt-1200 ">  </ span > < span
21392151class ="ectt-1200 ">  </ span > < span
21402152class ="ectt-1200 ">  </ span > < span style ="color:#000000 "> < span
21412153class ="ectt-1200 "> ports</ span > </ span > < span style ="color:#000000 "> < span
21422154class ="ectt-1200 "> :</ span > </ span >
21432155< span class ="label "> < a
2144- id ="x1-25017r17 "> </ a > </ span > < span
2156+ id ="x1-25018r18 "> </ a > </ span > < span
21452157class ="ectt-1200 ">  </ span > < span
21462158class ="ectt-1200 ">  </ span > < span
21472159class ="ectt-1200 ">  </ span > < span
@@ -2151,15 +2163,15 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
21512163class ="ectt-1200 "> -</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
21522164class ="ectt-1200 "> "6400:6400"</ span > </ span >
21532165< span class ="label "> < a
2154- id ="x1-25018r18 "> </ a > </ span > < span
2166+ id ="x1-25019r19 "> </ a > </ span > < span
21552167class ="ectt-1200 ">  </ span > < span
21562168class ="ectt-1200 ">  </ span > < span
21572169class ="ectt-1200 ">  </ span > < span
21582170class ="ectt-1200 ">  </ span > < span style ="color:#000000 "> < span
21592171class ="ectt-1200 "> depends_on</ span > </ span > < span style ="color:#000000 "> < span
21602172class ="ectt-1200 "> :</ span > </ span >
21612173< span class ="label "> < a
2162- id ="x1-25019r19 "> </ a > </ span > < span
2174+ id ="x1-25020r20 "> </ a > </ span > < span
21632175class ="ectt-1200 ">  </ span > < span
21642176class ="ectt-1200 ">  </ span > < span
21652177class ="ectt-1200 ">  </ span > < span
@@ -2170,36 +2182,36 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
21702182class ="ectt-1200 "> database</ span > </ span >
21712183
21722184< span class ="label "> < a
2173- id ="x1-25020r20 "> </ a > </ span > </ pre >
2185+ id ="x1-25021r21 "> </ a > </ span > </ pre >
21742186 </ div >
2175- <!--l. 636 --> < p class ="indent " > We can now run our application and database with the following command within the root directory.
2187+ <!--l. 637 --> < p class ="indent " > We can now run our application and database with the following command within the root directory.
21762188</ p >
21772189 < div class ="framedenv " id ="shaded*-1 ">
2178- <!--l. 638 -->
2190+ <!--l. 639 -->
21792191< pre class ="lstlisting " id ="listing-38 "> < span class ="label "> < a
2180- id ="x1-25021r1 "> </ a > </ span > < span style ="color:#000000 "> < span
2192+ id ="x1-25022r1 "> </ a > </ span > < span style ="color:#000000 "> < span
21812193class ="ectt-1200 "> $</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
21822194class ="ectt-1200 "> docker</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
21832195class ="ectt-1200 "> compose</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
21842196class ="ectt-1200 "> up</ span > </ span > < span
21852197class ="ectt-1200 ">  </ span > </ pre >
21862198 </ div >
2187- <!--l. 640 --> < p class ="indent " > Observe the output of this command and you can see two containers running. One is the database, < span
2199+ <!--l. 641 --> < p class ="indent " > Observe the output of this command and you can see two containers running. One is the database, < span
21882200class ="ectt-1200 "> database</ span > ,
21892201and the other is our application, < span
21902202class ="ectt-1200 "> app</ span > . We can now navigate to < a
21912203href ="http://localhost:6400 " class ="url " > < span
21922204class ="ectt-1200 "> http://localhost:6400</ span > </ a > to access our running
21932205application.
2194- </ p > <!--l. 644 --> < p class ="indent " > In reality though our database probably did not have enough time to start up before our application tried to
2206+ </ p > <!--l. 645 --> < p class ="indent " > In reality though our database probably did not have enough time to start up before our application tried to
21952207connect to it. We can fix this by adding a delay to our application startup. To do this we will change the < span
21962208class ="ectt-1200 "> CMD</ span >
21972209instruction to the following line in our < span
21982210class ="ectt-1200 "> Dockerfile</ span > :
21992211</ p >
22002212 < div class ="framedenv " id ="code-1 ">
2201- <!--l. 648 --> < pre class ="listings " id ="listing-39 "> < span class ="label "> < a
2202- id ="x1-25022r1 "> </ a > </ span > < span style ="color:#33997E "> < span
2213+ <!--l. 649 --> < pre class ="listings " id ="listing-39 "> < span class ="label "> < a
2214+ id ="x1-25023r1 "> </ a > </ span > < span style ="color:#33997E "> < span
22032215class ="ectt-1200 "> #</ span > </ span > < span style ="color:#33997E "> </ span > < span style ="color:#33997E "> < span
22042216class ="ectt-1200 "> Adding</ span > </ span > < span style ="color:#33997E "> </ span > < span style ="color:#33997E "> < span
22052217class ="ectt-1200 "> a</ span > </ span > < span style ="color:#33997E "> </ span > < span style ="color:#33997E "> < span
@@ -2209,7 +2221,7 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
22092221class ="ectt-1200 "> application</ span > </ span > < span style ="color:#33997E "> </ span > < span style ="color:#33997E "> < span
22102222class ="ectt-1200 "> startup</ span > </ span >
22112223< span class ="label "> < a
2212- id ="x1-25023r2 "> </ a > </ span > < span style ="color:#006699 "> < span
2224+ id ="x1-25024r2 "> </ a > </ span > < span style ="color:#006699 "> < span
22132225class ="ectt-1200 "> CMD</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
22142226class ="ectt-1200 "> [</ span > </ span > < span style ="color:#669900 "> < span
22152227class ="ectt-1200 "> "</ span > </ span > < span style ="color:#669900 "> < span
@@ -2236,7 +2248,7 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
22362248class ="ectt-1200 "> run</ span > </ span > < span style ="color:#669900 "> </ span > < span style ="color:#669900 "> < span
22372249class ="ectt-1200 "> \</ span > </ span >
22382250< span class ="label "> < a
2239- id ="x1-25024r3 "> </ a > </ span > < span
2251+ id ="x1-25025r3 "> </ a > </ span > < span
22402252class ="ectt-1200 ">  </ span > < span
22412253class ="ectt-1200 ">  </ span > < span
22422254class ="ectt-1200 ">  </ span > < span style ="color:#669900 "> < span
@@ -2250,16 +2262,16 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
22502262class ="ectt-1200 "> ]</ span > </ span >
22512263
22522264< span class ="label "> < a
2253- id ="x1-25025r4 "> </ a > </ span > </ pre >
2265+ id ="x1-25026r4 "> </ a > </ span > </ pre >
22542266 </ div >
2255- <!--l. 654 --> < p class ="indent " > In a real application you would want it to retry connecting to the database if it fails, but for simplicity now we
2267+ <!--l. 655 --> < p class ="indent " > In a real application you would want it to retry connecting to the database if it fails, but for simplicity now we
22562268will just add a delay. We can now rebuild our Docker image and run our application and database with the
22572269following command:
22582270</ p >
22592271 < div class ="framedenv " id ="shaded*-1 ">
2260- <!--l. 658 -->
2272+ <!--l. 659 -->
22612273< pre class ="lstlisting " id ="listing-40 "> < span class ="label "> < a
2262- id ="x1-25026r1 "> </ a > </ span > < span style ="color:#000000 "> < span
2274+ id ="x1-25027r1 "> </ a > </ span > < span style ="color:#000000 "> < span
22632275class ="ectt-1200 "> $</ span > </ span > < span style ="color:#000000 "> </ span > < span style ="color:#000000 "> < span
22642276class ="ectt-1200 "> docker</ span > </ span > < span style ="color:#000000 "> < span
22652277class ="ectt-1200 "> -</ span > </ span > < span style ="color:#000000 "> < span
@@ -2271,7 +2283,7 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
22712283
22722284
22732285 </ div >
2274- <!--l. 660 --> < p class ="indent " > You may have noticed that when we defined the todo application service above we did not specify an image.
2286+ <!--l. 661 --> < p class ="indent " > You may have noticed that when we defined the todo application service above we did not specify an image.
22752287This is because < span
22762288class ="ectt-1200 "> docker compose </ span > was instructed to use our < span
22772289class ="ectt-1200 "> Dockerfile </ span > at build time, so that we do not have to
@@ -2280,10 +2292,10 @@ <h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
22802292</ p >
22812293 < h3 class ="sectionHead "> < span class ="titlemark "> 6 </ span > < a
22822294 id ="x1-260006 "> </ a > Conclusion</ h3 >
2283- <!--l. 682 --> < p class ="noindent " > Over the past couple of weeks we have built a full todo app API that is ready to be deployed to a remote
2295+ <!--l. 683 --> < p class ="noindent " > Over the past couple of weeks we have built a full todo app API that is ready to be deployed to a remote
22842296production environment. We started with a Flask API returning static responses and now we have a dynamic API
22852297that is running in a containerised environment with an external database.
2286- </ p > <!--l. 685 --> < p class ="indent " > We have cheated with our Docker deployment by using the Flask development server. For a
2298+ </ p > <!--l. 686 --> < p class ="indent " > We have cheated with our Docker deployment by using the Flask development server. For a
22872299production environment you will want to use a production webserver such as < span
22882300class ="ectt-1200 "> gunicorn </ span > or < span
22892301class ="ectt-1200 "> uwsgi</ span > .
0 commit comments