1
00:00:02,160 --> 00:00:04,610
So onwards to the backend.

2
00:00:04,610 --> 00:00:08,400
I'll comment it back in this backend service

3
00:00:08,400 --> 00:00:10,670
and now we need to configure this.

4
00:00:10,670 --> 00:00:12,970
Now, let's start with the image.

5
00:00:12,970 --> 00:00:16,050
On which image should this backend be based?

6
00:00:16,050 --> 00:00:18,783
Keep in mind that the backend is our Node API.

7
00:00:19,830 --> 00:00:21,870
Well, we have a Dockerfile in there

8
00:00:21,870 --> 00:00:24,520
and we used that in the last section

9
00:00:24,520 --> 00:00:27,810
to build a goals-node image.

10
00:00:27,810 --> 00:00:31,563
So we could specify image: goals-node here.

11
00:00:31,563 --> 00:00:34,110
Now, we have a problem though.

12
00:00:34,110 --> 00:00:35,620
I removed all images

13
00:00:35,620 --> 00:00:38,290
and therefore, this image doesn't exist anymore.

14
00:00:38,290 --> 00:00:39,950
Of course, we can rebuild it

15
00:00:39,950 --> 00:00:41,490
and then we could use it.

16
00:00:41,490 --> 00:00:44,937
But Docker Compose also replaces this build step.

17
00:00:44,937 --> 00:00:48,170
Instead of specifying a finished image,

18
00:00:48,170 --> 00:00:50,310
you can also give Docker Compose all

19
00:00:50,310 --> 00:00:51,720
the information it needs

20
00:00:51,720 --> 00:00:52,850
to build an image.

21
00:00:52,850 --> 00:00:55,970
And you do this below your container

22
00:00:55,970 --> 00:00:57,480
to which the image belongs

23
00:00:57,480 --> 00:00:59,453
with the build option.

24
00:01:00,480 --> 00:01:03,860
And the build option now wants to know

25
00:01:03,860 --> 00:01:07,490
where it finds the Dockerfile that should be built.

26
00:01:07,490 --> 00:01:09,760
In its simplest form,

27
00:01:09,760 --> 00:01:12,530
you can just use a relative path here

28
00:01:12,530 --> 00:01:15,890
to, for example, say it's in the same folder

29
00:01:15,890 --> 00:01:18,220
as the docker-compose.yaml file

30
00:01:18,220 --> 00:01:22,700
or to say it's in the backend folder in this case.

31
00:01:22,700 --> 00:01:26,370
And then, Docker Compose would look into that folder,

32
00:01:26,370 --> 00:01:29,310
it would look for a file named Dockerfile

33
00:01:29,310 --> 00:01:32,500
and it would build the image for this backend service,

34
00:01:32,500 --> 00:01:36,090
this backend container with this Dockerfile.

35
00:01:36,090 --> 00:01:37,450
And then once this is built,

36
00:01:37,450 --> 00:01:40,420
it uses that image for this container.

37
00:01:40,420 --> 00:01:44,020
Now here, actually this configuration is all we need

38
00:01:44,020 --> 00:01:46,450
but I also want to show you the longer form.

39
00:01:46,450 --> 00:01:49,850
The longer form is that you have an object here

40
00:01:49,850 --> 00:01:52,670
that you have nested keys below build.

41
00:01:52,670 --> 00:01:54,850
So indented below build

42
00:01:54,850 --> 00:01:57,209
and you then can specify a context,

43
00:01:57,209 --> 00:02:00,053
which is the path to the folder

44
00:02:00,053 --> 00:02:02,550
that holds your Dockerfile.

45
00:02:02,550 --> 00:02:04,539
And then also, a dockerfile key,

46
00:02:04,539 --> 00:02:07,360
which specifies the file name.

47
00:02:07,360 --> 00:02:09,970
Now, if your file is named Dockerfile,

48
00:02:09,970 --> 00:02:12,257
there is no need to use this longer form

49
00:02:12,257 --> 00:02:14,480
but if you named it differently,

50
00:02:14,480 --> 00:02:17,170
for example, Dockerfile-dev,

51
00:02:17,170 --> 00:02:20,330
then this is how you could tell Docker Compose,

52
00:02:20,330 --> 00:02:22,630
which Dockerfile to use.

53
00:02:22,630 --> 00:02:24,890
And also another note about the context.

54
00:02:24,890 --> 00:02:27,200
It can be the path to your Dockerfile,

55
00:02:27,200 --> 00:02:28,967
like this example here,

56
00:02:28,967 --> 00:02:30,730
but it will also be the place

57
00:02:30,730 --> 00:02:33,280
where the Dockerfile is built thereafter,

58
00:02:33,280 --> 00:02:36,130
so where the image will be generated.

59
00:02:36,130 --> 00:02:38,900
And that means that your context should be set

60
00:02:38,900 --> 00:02:41,870
to a folder, which includes everything

61
00:02:41,870 --> 00:02:44,620
the Dockerfile might be referring to.

62
00:02:44,620 --> 00:02:48,630
So if in your Dockerfile, you are copying some folder

63
00:02:48,630 --> 00:02:52,760
into the image, the context must be set to a folder

64
00:02:52,760 --> 00:02:55,920
that includes that to be copied folder.

65
00:02:55,920 --> 00:02:57,840
In this case, this would be the case.

66
00:02:57,840 --> 00:03:01,200
The Dockerfile in the backend folder only refers

67
00:03:01,200 --> 00:03:04,670
to other folders, which are included in the backend folder.

68
00:03:04,670 --> 00:03:07,940
So setting the context to backend would be okay.

69
00:03:07,940 --> 00:03:11,280
But if your Dockerfile would be in some other nested folder

70
00:03:11,280 --> 00:03:14,090
and needs access to folders outside

71
00:03:14,090 --> 00:03:15,500
of that nested folder,

72
00:03:15,500 --> 00:03:19,410
then your context should be set to a higher level folder.

73
00:03:19,410 --> 00:03:21,590
And in case that's super confusing

74
00:03:21,590 --> 00:03:24,170
because it's just some theory right now,

75
00:03:24,170 --> 00:03:26,410
in a later course section,

76
00:03:26,410 --> 00:03:29,280
when we set up a Laravel application,

77
00:03:29,280 --> 00:03:31,710
a Laravel project environment,

78
00:03:31,710 --> 00:03:33,820
there you will see an example

79
00:03:33,820 --> 00:03:35,685
where we need to set the context

80
00:03:35,685 --> 00:03:39,210
to something else than the Dockerfile path.

81
00:03:39,210 --> 00:03:42,840
Now, here I'll leave that here but comment it out.

82
00:03:42,840 --> 00:03:44,510
I will use the shorter form

83
00:03:44,510 --> 00:03:47,728
because my Dockerfile is named Dockerfile

84
00:03:47,728 --> 00:03:49,750
and therefore, just pointing at the path

85
00:03:49,750 --> 00:03:51,886
is all I need to do here.

86
00:03:51,886 --> 00:03:55,640
In this longer form, just as an additional note,

87
00:03:55,640 --> 00:03:57,360
you can add args here

88
00:03:57,360 --> 00:04:01,810
and then below that, you can add your args

89
00:04:01,810 --> 00:04:04,700
like some-arg with some value.

90
00:04:04,700 --> 00:04:09,460
So in case your Dockerfile uses ARGS,

91
00:04:09,460 --> 00:04:12,243
you might remember them from earlier in the course.

92
00:04:13,800 --> 00:04:16,089
This is how you could specify them

93
00:04:16,089 --> 00:04:18,410
when using Docker Compose.

94
00:04:18,410 --> 00:04:19,700
But that's just a side note.

95
00:04:19,700 --> 00:04:22,380
Here, we just need to point at the folder

96
00:04:22,380 --> 00:04:26,610
and Docker Compose will be able to build this Dockerfile.

97
00:04:26,610 --> 00:04:28,610
Okay, so this is the first step.

98
00:04:28,610 --> 00:04:31,730
This will produce the image we need for the backend

99
00:04:31,730 --> 00:04:33,240
but of course, it's not all.

100
00:04:33,240 --> 00:04:35,730
It just replaces this step

101
00:04:35,730 --> 00:04:38,070
where we build the image manually.

102
00:04:38,070 --> 00:04:40,890
Now, for running goals-backend,

103
00:04:40,890 --> 00:04:44,220
we also needed environment variables,

104
00:04:44,220 --> 00:04:47,260
we needed three volumes,

105
00:04:47,260 --> 00:04:52,260
removal and detach mode, a network and ports.

106
00:04:52,610 --> 00:04:54,940
Well, let's go through that step by step.

107
00:04:54,940 --> 00:04:57,360
Let's maybe start with the ports.

108
00:04:57,360 --> 00:05:00,080
You can also specify published ports

109
00:05:00,080 --> 00:05:03,010
in your docker-compose.yaml file.

110
00:05:03,010 --> 00:05:07,360
So here, next to build, on the same level as build,

111
00:05:07,360 --> 00:05:09,380
indented below backend,

112
00:05:09,380 --> 00:05:11,650
I will add ports.

113
00:05:11,650 --> 00:05:14,070
And the ports is very straightforward

114
00:05:14,070 --> 00:05:16,140
and does just what the name implies.

115
00:05:16,140 --> 00:05:19,500
It allows you to specify published ports.

116
00:05:19,500 --> 00:05:21,900
You specify them as a list.

117
00:05:21,900 --> 00:05:23,820
Therefore we need a dash here.

118
00:05:23,820 --> 00:05:26,830
Where you simply add a string

119
00:05:26,830 --> 00:05:28,970
with single or double quotes

120
00:05:28,970 --> 00:05:32,460
where you then have your host port,

121
00:05:32,460 --> 00:05:34,360
for example, 3000,

122
00:05:34,360 --> 00:05:38,490
and your container internal port, 80, for example.

123
00:05:38,490 --> 00:05:40,107
Now, in this case here,

124
00:05:40,107 --> 00:05:45,107
the internal port, the Node API uses is 80

125
00:05:45,300 --> 00:05:49,550
and I also wanna expose this on port 80 on the host machine

126
00:05:49,550 --> 00:05:52,450
so I will use 80:80 here.

127
00:05:52,450 --> 00:05:54,910
Now, if your application would use

128
00:05:54,910 --> 00:05:56,520
and expose multiple ports,

129
00:05:56,520 --> 00:05:59,360
you could also specify multiple ports here

130
00:05:59,360 --> 00:06:00,883
but here we just need one.

131
00:06:02,420 --> 00:06:03,634
Now, that's the ports.

132
00:06:03,634 --> 00:06:06,210
Additionally, we have a network.

133
00:06:06,210 --> 00:06:07,660
Now, I already explained

134
00:06:07,660 --> 00:06:10,560
that Docker Compose creates a default network

135
00:06:10,560 --> 00:06:13,480
and adds all containers to that network.

136
00:06:13,480 --> 00:06:15,950
So therefore, there's nothing we need to do here.

137
00:06:15,950 --> 00:06:18,290
It will just work, it will just be part

138
00:06:18,290 --> 00:06:20,590
of a network automatically.

139
00:06:20,590 --> 00:06:23,700
Now for -d and --rm,

140
00:06:23,700 --> 00:06:27,410
I showed you that you automatically remove everything

141
00:06:27,410 --> 00:06:30,680
if you stop your services with Docker Compose down

142
00:06:30,680 --> 00:06:33,000
and that you start them in detach mode

143
00:06:33,000 --> 00:06:36,790
by adding -d after docker-compose up.

144
00:06:36,790 --> 00:06:38,340
So we don't need to add anything

145
00:06:38,340 --> 00:06:39,840
to our configuration for that.

146
00:06:40,870 --> 00:06:42,810
Now, what about the volumes?

147
00:06:42,810 --> 00:06:44,720
We've got one named volume

148
00:06:44,720 --> 00:06:48,363
and then a bind mount and an anonymous volume.

149
00:06:49,660 --> 00:06:51,950
Well, we learned how to add volumes.

150
00:06:51,950 --> 00:06:54,580
So therefore here, next to ports,

151
00:06:54,580 --> 00:06:56,610
not nested but next to it,

152
00:06:56,610 --> 00:06:58,450
on the same level as ports,

153
00:06:58,450 --> 00:07:00,244
we add volumes.

154
00:07:00,244 --> 00:07:04,490
And just as for MongoDB, we can add a volume

155
00:07:04,490 --> 00:07:05,936
with such a dash here.

156
00:07:05,936 --> 00:07:09,720
And then, for example, add the logs volume,

157
00:07:09,720 --> 00:07:13,130
which points at app/logs.

158
00:07:13,130 --> 00:07:15,930
So basically, as we did it here

159
00:07:15,930 --> 00:07:17,573
when we used docker run.

160
00:07:18,560 --> 00:07:20,320
Now, since it is a named volume,

161
00:07:20,320 --> 00:07:24,530
we should also add it here to our top level volumes key

162
00:07:24,530 --> 00:07:26,203
at the end of this file.

163
00:07:27,960 --> 00:07:30,630
Now, that's not the only volume we need here though,

164
00:07:30,630 --> 00:07:32,465
we also have a bind mount.

165
00:07:32,465 --> 00:07:34,090
Now, with docker run,

166
00:07:34,090 --> 00:07:36,400
we needed this absolute path.

167
00:07:36,400 --> 00:07:39,720
With docker-compose, that actually gets way easier.

168
00:07:39,720 --> 00:07:43,070
Here, we are allowed to use a relative path,

169
00:07:43,070 --> 00:07:46,660
relative from the docker-compose.yaml file.

170
00:07:46,660 --> 00:07:48,150
So in my case here,

171
00:07:48,150 --> 00:07:51,145
I want to share the whole backend folder.

172
00:07:51,145 --> 00:07:53,090
That's what I also did here.

173
00:07:53,090 --> 00:07:55,251
I shared the whole backend folder

174
00:07:55,251 --> 00:07:58,740
and hence here, I type ./backend

175
00:08:00,250 --> 00:08:04,820
and bind that internally to /app

176
00:08:04,820 --> 00:08:06,053
inside of the container.

177
00:08:07,120 --> 00:08:10,940
That's the same we did here with docker run

178
00:08:10,940 --> 00:08:13,780
but there we had to use the app's new path,

179
00:08:13,780 --> 00:08:15,330
which was way longer.

180
00:08:15,330 --> 00:08:17,420
Now we use a relative path,

181
00:08:17,420 --> 00:08:20,570
relative scene from docker-compose.yaml.

182
00:08:20,570 --> 00:08:23,532
And therefore, we just go into the backend folder

183
00:08:23,532 --> 00:08:26,610
and share everything that's in the backend folder

184
00:08:26,610 --> 00:08:30,110
with our app folder inside of the container.

185
00:08:30,110 --> 00:08:33,640
Now, bind mounts don't need to be specified here

186
00:08:33,640 --> 00:08:35,730
and can't be specified here.

187
00:08:35,730 --> 00:08:38,309
So therefore, we don't need to add any entry

188
00:08:38,309 --> 00:08:40,215
to volumes for that.

189
00:08:40,215 --> 00:08:42,570
Now, we've got one last volume

190
00:08:42,570 --> 00:08:44,374
and that's this anonymous volume.

191
00:08:44,374 --> 00:08:45,939
We can just copy that

192
00:08:45,939 --> 00:08:50,939
and add it like this to our volumes list like bind mounts,

193
00:08:51,670 --> 00:08:55,210
anonymous volumes also can't and therefore don't need

194
00:08:55,210 --> 00:08:57,883
to be added to this top-level volumes key.

195
00:08:59,100 --> 00:09:01,500
So now we added these three volumes

196
00:09:01,500 --> 00:09:03,563
to our backend container here.

197
00:09:04,490 --> 00:09:06,340
And the only remaining thing now

198
00:09:06,340 --> 00:09:08,560
are the two environment variables

199
00:09:08,560 --> 00:09:10,450
and we learned how that works

200
00:09:10,450 --> 00:09:12,490
and I will again use a file here.

201
00:09:12,490 --> 00:09:15,610
I'll name it backend.env.

202
00:09:15,610 --> 00:09:16,811
And in this file,

203
00:09:16,811 --> 00:09:21,811
I wanna set up my MONGODB_USERNAME environment variable

204
00:09:23,170 --> 00:09:25,380
and assign a value of max.

205
00:09:25,380 --> 00:09:28,790
And my MONGODB_PASSWORD environment variable

206
00:09:28,790 --> 00:09:31,232
and assign a value of secret.

207
00:09:31,232 --> 00:09:34,510
And with that backend.env file stored

208
00:09:34,510 --> 00:09:36,070
in the env folder,

209
00:09:36,070 --> 00:09:38,580
we can attach it to this container.

210
00:09:38,580 --> 00:09:41,330
Or we can use it from inside this container

211
00:09:41,330 --> 00:09:44,380
by adding the env_file key here

212
00:09:44,380 --> 00:09:46,585
and then simply pointing,

213
00:09:46,585 --> 00:09:49,500
like we did it up there for MongoDB

214
00:09:49,500 --> 00:09:54,500
to ./env/backend.env.

215
00:09:54,910 --> 00:09:58,789
And now the environment variable's specified like this

216
00:09:58,789 --> 00:10:02,710
in this .env file will be made available to this container

217
00:10:02,710 --> 00:10:05,083
and the application running in the container.

218
00:10:06,320 --> 00:10:07,970
And that should be all.

219
00:10:07,970 --> 00:10:11,660
There is one extra key I also wanna add here though.

220
00:10:11,660 --> 00:10:15,040
And that's the depends_on option.

221
00:10:15,040 --> 00:10:18,540
This is an option, which we only have in Docker Compose,

222
00:10:18,540 --> 00:10:20,080
not with docker run

223
00:10:20,080 --> 00:10:21,970
because when we use docker run

224
00:10:21,970 --> 00:10:23,820
and we run individual commands,

225
00:10:23,820 --> 00:10:25,141
it makes no sense.

226
00:10:25,141 --> 00:10:26,763
But with Docker Compose,

227
00:10:26,763 --> 00:10:30,740
where we create and launch multiple services,

228
00:10:30,740 --> 00:10:33,970
so multiple containers at the same time,

229
00:10:33,970 --> 00:10:38,430
sometimes, one container might depend on another container

230
00:10:38,430 --> 00:10:40,029
to be up and running already.

231
00:10:40,029 --> 00:10:41,850
So for example here,

232
00:10:41,850 --> 00:10:45,310
my backend actually depends on mongodb

233
00:10:45,310 --> 00:10:46,882
being up and running already

234
00:10:46,882 --> 00:10:49,330
because my backend container wants

235
00:10:49,330 --> 00:10:51,320
to connect to MongoDB.

236
00:10:51,320 --> 00:10:55,070
My Node API wants to connect to MongoDB

237
00:10:55,070 --> 00:10:58,100
and therefore, I want express a dependency here

238
00:10:58,100 --> 00:11:00,050
to let compose know

239
00:11:00,050 --> 00:11:02,920
that it should first bring up mongodb

240
00:11:02,920 --> 00:11:05,040
and only once that is up and running,

241
00:11:05,040 --> 00:11:07,503
it should create this backend container.

242
00:11:08,499 --> 00:11:10,450
Depends_on then takes such a list

243
00:11:10,450 --> 00:11:12,650
with dashes and in there,

244
00:11:12,650 --> 00:11:15,020
it then simply specify the name

245
00:11:15,020 --> 00:11:17,970
of the service this service depends on.

246
00:11:17,970 --> 00:11:21,940
So in this case, my backend service depends on mongodb.

247
00:11:21,940 --> 00:11:23,430
So the name I chose here,

248
00:11:23,430 --> 00:11:27,020
and that's the name we now use down there.

249
00:11:27,020 --> 00:11:28,480
And that's all you need to do.

250
00:11:28,480 --> 00:11:30,580
And of course, one service is also able

251
00:11:30,580 --> 00:11:32,760
to depend on multiple services

252
00:11:32,760 --> 00:11:34,580
in case you had this requirement.

253
00:11:34,580 --> 00:11:36,992
Here we only have one dependency though.

254
00:11:36,992 --> 00:11:39,570
And with that, I'm quite happy

255
00:11:39,570 --> 00:11:41,870
with my backend container setup.

256
00:11:41,870 --> 00:11:44,890
So I would say let's again try this.

257
00:11:44,890 --> 00:11:46,620
Let's bring up the terminal

258
00:11:46,620 --> 00:11:50,730
and let's again run docker-compose up -d.

259
00:11:50,730 --> 00:11:53,680
And now this creates the networks,

260
00:11:53,680 --> 00:11:55,170
pulls down the Node image

261
00:11:55,170 --> 00:11:57,470
because it builds this backend image

262
00:11:57,470 --> 00:11:59,440
because it doesn't exist yet.

263
00:11:59,440 --> 00:12:01,630
So therefore, it downloads the Node image

264
00:12:01,630 --> 00:12:04,710
and then uses the Dockerfile in the backend folder

265
00:12:04,710 --> 00:12:07,920
to create the image for this backend container

266
00:12:07,920 --> 00:12:10,540
and once all of that is done,

267
00:12:10,540 --> 00:12:13,150
once it downloaded this, once it built this,

268
00:12:13,150 --> 00:12:15,440
it will bring up this container,

269
00:12:15,440 --> 00:12:16,930
this backend container

270
00:12:16,930 --> 00:12:19,275
and of course, also the MongoDB container based

271
00:12:19,275 --> 00:12:24,275
on the configuration we specified in docker-compose.yaml.

272
00:12:24,640 --> 00:12:27,718
So let's quickly wait for this to finish.

273
00:12:27,718 --> 00:12:29,070
Here we go.

274
00:12:29,070 --> 00:12:30,690
It now downloaded everything.

275
00:12:30,690 --> 00:12:34,650
Now it's running npm install in the backend Dockerfile

276
00:12:34,650 --> 00:12:37,000
or for the backend image I should say.

277
00:12:37,000 --> 00:12:38,073
And it's done.

278
00:12:38,950 --> 00:12:40,300
Now with docker ps,

279
00:12:40,300 --> 00:12:43,285
we can see, we've got two containers up and running

280
00:12:43,285 --> 00:12:48,270
and we got one container named docker-complete.

281
00:12:48,270 --> 00:12:50,433
So our project folder, _backend_1,

282
00:12:51,950 --> 00:12:54,050
which is the container named as users here.

283
00:12:54,050 --> 00:12:56,453
And then one container for mongodb.

284
00:12:57,720 --> 00:12:59,890
Now, let's use that container name

285
00:12:59,890 --> 00:13:02,096
for the backend, which was generated

286
00:13:02,096 --> 00:13:05,350
and let's look into the logs there.

287
00:13:05,350 --> 00:13:08,306
And we see it also connected to mongodb.

288
00:13:08,306 --> 00:13:11,720
And this is really something I wanna emphasize here.

289
00:13:11,720 --> 00:13:13,840
When we list all the containers,

290
00:13:13,840 --> 00:13:17,370
we see that the name defined for this container

291
00:13:17,370 --> 00:13:18,820
is actually this name,

292
00:13:18,820 --> 00:13:23,408
this docker-complete_backend_1 name.

293
00:13:23,408 --> 00:13:27,290
So it's not just backend or anything like that.

294
00:13:27,290 --> 00:13:30,000
And for mongodb, it's not just mongodb

295
00:13:30,000 --> 00:13:31,683
but instead this longer name.

296
00:13:32,980 --> 00:13:37,340
Nonetheless, the names you specify here under services,

297
00:13:37,340 --> 00:13:39,820
so mongodb and backend,

298
00:13:39,820 --> 00:13:44,300
these names will also be memorized, you could say,

299
00:13:44,300 --> 00:13:47,062
by Docker and you can use these names

300
00:13:47,062 --> 00:13:51,017
inside your code to establish network connections.

301
00:13:51,017 --> 00:13:53,630
That's why in app.js,

302
00:13:53,630 --> 00:13:57,699
where I connect to mongodb as a name,

303
00:13:57,699 --> 00:14:00,840
this still works even though the name assigned

304
00:14:00,840 --> 00:14:03,650
by Docker Compose is a different one.

305
00:14:03,650 --> 00:14:07,330
I can still connect to mongodb by that name

306
00:14:07,330 --> 00:14:09,120
in my app.js file

307
00:14:09,120 --> 00:14:14,120
because I used mongodb as a service name here.

308
00:14:14,160 --> 00:14:17,580
So these service names are the names you can use

309
00:14:17,580 --> 00:14:20,310
in your code to send requests

310
00:14:20,310 --> 00:14:24,050
and to leverage the network Docker Compose creates for you.

311
00:14:24,050 --> 00:14:26,420
That's just an important note I have here

312
00:14:26,420 --> 00:14:29,216
and something I want you to be aware of.

313
00:14:29,216 --> 00:14:33,840
Now, with that, we got these two services up and running,

314
00:14:33,840 --> 00:14:35,890
the backend and the database.

315
00:14:35,890 --> 00:14:39,590
Now, we, of course, also want to start the front end.

316
00:14:39,590 --> 00:14:42,430
So let's again bring everything down

317
00:14:42,430 --> 00:14:44,000
with docker-compose down

318
00:14:44,000 --> 00:14:46,160
and let's then continue working

319
00:14:46,160 --> 00:14:49,603
on our front end service here.

