forked from cyberark/secretless-broker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.dev
73 lines (61 loc) · 2.39 KB
/
Dockerfile.dev
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
67
68
69
70
71
72
73
FROM golang:1.13-stretch
MAINTAINER Conjur Inc.
RUN apt-get update && \
apt-get install -y curl \
jq \
less \
vim
ENV ROOT_DIR=/secretless
WORKDIR $ROOT_DIR
RUN groupadd -r secretless \
-g 777 && \
useradd -c "secretless runner account" \
-g secretless \
-u 777 \
-m \
-r \
secretless && \
mkdir -p /usr/local/lib/secretless \
/sock && \
chown secretless:secretless /usr/local/lib/secretless \
/sock
# these are binaries necessary for development
# the happen to be written in Go:
#
# go-junit-report => Convert go test output to junit xml
# goconvey => Go testing tool
# reflex => Utility for watching files and executing process in response to changes
# gocov => converts native coverage output to gocov's JSON interchange format
# gocov-xml => converts gocov format to XML for use with Jenkins/Cobertura
RUN go get -u github.com/jstemmer/go-junit-report && \
go get github.com/smartystreets/goconvey && \
go get github.com/cespare/reflex && \
go get github.com/axw/gocov/gocov && \
go get github.com/AlekSi/gocov-xml
# go mod dependency management for the secretless project
COPY go.mod go.sum /secretless/
COPY third_party/ /secretless/third_party
RUN go mod download
# TODO: all the stuff below this line is not needed
# this image should just be a development environment for Secretless
# and not be a snapshot of the repository
# the repo should be volume mounted
# NOTE: don't forget all the parts of the repo that are dependent on the definition
# of secretless-dev as dev environment + secretless repo snapshot +
# binaries, you'll need to fix them all
# TODO: Expand this with build args when we support other arches
ENV GOOS=linux \
GOARCH=amd64 \
CGO_ENABLED=1
# secretless source files
COPY ./cmd ./cmd
COPY ./internal ./internal
COPY ./pkg ./pkg
COPY ./resource-definitions ./resource-definitions
# Not strictly needed but we might as well do this step too since
# the dev may want to run the binary
RUN go build -o dist/$GOOS/$GOARCH/secretless-broker ./cmd/secretless-broker && \
go build -o dist/$GOOS/$GOARCH/summon2 ./cmd/summon2 && \
ln -s $ROOT_DIR/dist/$GOOS/$GOARCH/secretless-broker /usr/local/bin/ && \
ln -s $ROOT_DIR/dist/$GOOS/$GOARCH/summon2 /usr/local/bin/
COPY . .