forked from jheidel/timelapse-queue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
65 lines (48 loc) · 1.42 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
####
# Build the web frontend
####
FROM alpine AS builder-web
WORKDIR /web/
RUN apk add --no-cache nodejs nodejs-npm make
# Make sure npm is up to date
RUN npm install -g npm
# Install yarn for web dependency management
RUN npm install -g yarn
# Install polymer CLI
RUN yarn global add polymer-cli
# Copy web source files
COPY web/ .
# Build the frontend
RUN make
####
# Build the go binary
####
FROM golang:alpine AS builder-go
RUN apk add --no-cache libjpeg-turbo-dev git g++ make
WORKDIR /go/src/timelapse-queue/
# Copy all source files.
COPY . .
# Copy built web package from the previous stage.
COPY --from=builder-web /web/build/ /go/src/timelapse-queue/web/build/
# Install go-bindata executable
# TODO(jheidel): This tool is deprecated and it would be a good idea to switch
# onto a maintained go asset package.
RUN go get -u github.com/jteeuwen/go-bindata/...
# Build the standalone executable.
RUN make build
####
# Compose everything into the final minimal image.
####
FROM alpine
WORKDIR /app
COPY --from=builder-go /go/src/timelapse-queue/timelapse-queue /app
RUN apk add --no-cache ffmpeg libjpeg-turbo
# Create the mountpoint. The user is expected to run the image with a
# filesystem bound here.
RUN mkdir -p /mnt/fsroot
# Use local timezone.
# TODO use system time instead of hardcoded.
RUN apk add --update tzdata
ENV TZ=America/Los_Angeles
EXPOSE 8080
CMD ["./timelapse-queue", "--port", "8080", "--root", "/mnt/fsroot"]