+48
Taskfile.yml
+48
Taskfile.yml
···
1
+
version: "3"
2
+
3
+
vars:
4
+
USERNAME: kacaii
5
+
IMAGE_NAME: senac-brigade-server
6
+
TAG_NAME: latest
7
+
FULL_IMAGE_NAME: "{{.USERNAME}}/{{.IMAGE_NAME}}:{{.TAG_NAME}}"
8
+
PORT: 8000
9
+
10
+
tasks:
11
+
default:
12
+
desc: ๏บ List available tasks
13
+
cmd: task --list-all
14
+
silent: true
15
+
16
+
docker:run:
17
+
desc: ๏ท Run the container
18
+
cmd: >
19
+
docker run
20
+
-e DATABASE_URL=$DATABASE_URL
21
+
-e COOKIE_TOKEN=$COOKIE_TOKEN
22
+
-e ADMIN_TOKEN=$ADMIN_TOKEN
23
+
-p {{.PORT}}:{{.PORT}}
24
+
{{.IMAGE_NAME}}:{{.TAG_NAME}}
25
+
26
+
docker:shipment:
27
+
desc: ๏ท Build, Tag and Push your app
28
+
cmds:
29
+
- task: docker:build-image
30
+
- task: docker:tag-image
31
+
- task: docker:push-image
32
+
33
+
# Docker Internal Tasks ------------------------------------------------------
34
+
35
+
docker:build-image:
36
+
internal: true
37
+
desc: ๏ท Build Docker image
38
+
cmd: docker-buildx build --file dockerfile --tag {{.IMAGE_NAME}} .
39
+
40
+
docker:tag-image:
41
+
internal: true
42
+
desc: ๏ Tag container image
43
+
cmd: docker tag {{.IMAGE_NAME}}:{{.TAG_NAME}} {{.FULL_IMAGE_NAME}}
44
+
45
+
docker:push-image:
46
+
internal: true
47
+
desc: ๏ Push to container registry
48
+
cmd: docker push {{.FULL_IMAGE_NAME}}
+1
-5
dockerfile
+1
-5
dockerfile
···
14
14
15
15
# Final stage
16
16
FROM erlang:${ERLANG_VERSION}-alpine
17
-
ARG GIT_SHA
18
-
ARG BUILD_TIME
19
-
ENV GIT_SHA=${GIT_SHA}
20
-
ENV BUILD_TIME=${BUILD_TIME}
21
-
ENV DATABASE_URL=${DATABASE_URL}
22
17
23
18
RUN \
24
19
addgroup --system webapp && \
···
31
26
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 CMD [ "/app/healthcheck.sh" ]
32
27
33
28
WORKDIR /app
29
+
34
30
ENTRYPOINT ["/app/entrypoint.sh"]
35
31
CMD ["run"]
+1
-6
src/app/supervision_tree.gleam
+1
-6
src/app/supervision_tree.gleam
···
33
33
}
34
34
}
35
35
36
-
let bind_to = case ctx.env {
37
-
context.Production -> "0.0.0.0"
38
-
context.Dev -> "localhost"
39
-
}
40
-
41
36
// Adding Mist to the supervision tree
42
37
let mist_pool_child =
43
38
webserver_handler
44
39
|> mist.new
45
-
|> mist.bind(bind_to)
40
+
|> mist.bind("0.0.0.0")
46
41
|> mist.port(8000)
47
42
48
43
// Starting supervision