## 1. Server # Use Go 1.10 FROM golang:1.10-alpine AS build-server # Load repository into docker WORKDIR /go/src/git.aiterp.net/rpdata/api/ COPY . . # Load build tools and dependencies RUN go get -u github.com/golang/dep/cmd/dep RUN go get -u github.com/jteeuwen/go-bindata/... RUN dep ensure RUN go generate ./... # Build server and tools (CGO disabled to make them 100% static) ENV CGO_ENABLED 0 RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-graphiql ./cmd/rpdata-graphiql RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-lb2charimport ./cmd/rpdata-lb2charimport RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-lb2logimport ./cmd/rpdata-lb2logimport RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-wikifileimport ./cmd/rpdata-wikifileimport RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-ensurechannels ./cmd/rpdata-ensurechannels RUN go build -a -installsuffix cgo -ldflags="-s -w" -o /binaries/rpdata-as2storyimport ./cmd/rpdata-as2storyimport ## 2. React UI # Use Node.JS 18 FROM node:10.5-alpine AS build-id # The content is already there WORKDIR /rpdata-ui COPY ./rpdata-ui /rpdata-ui # Prepare dependencies RUN npm install # Run build RUN npm run build ## 3. Regroup # Use alpine linux FROM alpine:3.7 # Install certificates to enable HTTPS GET requests RUN apk add --no-cache ca-certificates # Copy build files into final container COPY --from=build-server /binaries/* /usr/local/bin/ COPY --from=build-id /rpdata-ui/build /var/www/ # TODO: Use proper server instead of grapihql server CMD ["/usr/local/bin/rpdata-graphiql"]