forked from codefresh-io/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile-rootless
More file actions
49 lines (35 loc) · 1.3 KB
/
Dockerfile-rootless
File metadata and controls
49 lines (35 loc) · 1.3 KB
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
# go hub binary
FROM golang:alpine as go
RUN apk --update add ca-certificates git
RUN go install github.com/github/hub@latest
# python yq binary
FROM six8/pyinstaller-alpine:alpine-3.6-pyinstaller-v3.4 as yq
ARG YQ_VERSION=2.10.0
ENV PATH="/pyinstaller:$PATH"
RUN pip install yq==${YQ_VERSION}
RUN pyinstaller --noconfirm --onefile --log-level DEBUG --clean --distpath /tmp/ $(which yq)
# Main
FROM node:18.14.1-alpine3.17
RUN apk --update add --no-cache ca-certificates git curl bash jq
COPY --from=go /go/bin/hub /usr/local/bin/hub
COPY --from=yq /tmp/yq /usr/local/bin/yq
WORKDIR /cf-cli
COPY package.json /cf-cli
COPY yarn.lock /cf-cli
COPY check-version.js /cf-cli
COPY run-check-version.js /cf-cli
RUN yarn install --prod --frozen-lockfile && \
yarn cache clean
COPY . /cf-cli
RUN yarn generate-completion
RUN ln -s $(pwd)/lib/interface/cli/codefresh /usr/local/bin/codefresh
RUN codefresh components update --location components
# we keep /root as home directory because cli by default looks for $HOME/.cfconfig
# and we do not want to break user automation if he used to bind his .cfconfig
# to the /root/.cfconfig
RUN adduser -D -h /root -s /bin/sh cfu \
&& chown -R $(id -g cfu) /root /cf-cli \
&& chgrp -R $(id -g cfu) /root /cf-cli \
&& chmod -R g+rwX /root
USER cfu
ENTRYPOINT ["codefresh"]