-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
66 lines (49 loc) · 1.52 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
66
####
# Build the web frontend
####
FROM alpine AS builder-web
WORKDIR /web/
RUN apk add --no-cache nodejs npm make git
# 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-assetfs executable for constructing our archive.
RUN go get github.com/go-bindata/go-bindata/...
RUN go install github.com/go-bindata/go-bindata/...
RUN go get github.com/elazarl/go-bindata-assetfs/...
RUN go install github.com/elazarl/go-bindata-assetfs/...
# 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 80
CMD ["./timelapse-queue", "--port", "80", "--port_ssl", "443", "--root", "/mnt/fsroot"]