|
| 1 | +ARG VERSION |
| 2 | +ARG CODENAME |
| 3 | + |
| 4 | +FROM registry.drycc.cc/drycc/go-dev:latest AS build |
| 5 | +ADD . /workspace |
| 6 | +RUN export GO111MODULE=on \ |
| 7 | + && cd /workspace \ |
| 8 | + && sed -i "s#canary#$VERSION#g" version/version.go \ |
| 9 | + && CGO_ENABLED=0 init-stack go build -o /usr/local/bin/drycc drycc.go |
| 10 | + |
| 11 | +FROM registry.drycc.cc/drycc/base:$CODENAME |
| 12 | + |
| 13 | +ENV DRYCC_UID=1001 \ |
| 14 | + DRYCC_GID=1001 \ |
| 15 | + DRYCC_HOME_DIR=/workspace |
| 16 | + |
| 17 | +COPY --from=build /usr/local/bin/drycc /usr/local/bin/drycc |
| 18 | + |
| 19 | +ADD docker/entrypoint.sh /entrypoint.sh |
| 20 | + |
| 21 | +RUN install-packages bash-completion \ |
| 22 | + && groupadd drycc --gid ${DRYCC_GID} \ |
| 23 | + && useradd drycc -u ${DRYCC_UID} -g ${DRYCC_GID} -s /bin/bash -m -d ${DRYCC_HOME_DIR} \ |
| 24 | + && mkdir -p /etc/bash_completion.d \ |
| 25 | + && drycc completion bash > /etc/bash_completion.d/drycc \ |
| 26 | + && chown ${DRYCC_GID}:${DRYCC_UID} /usr/local/bin \ |
| 27 | + && echo 'alias cd="echo \"cd: restricted\"; false"' > ${DRYCC_HOME_DIR}/.bash_aliases \ |
| 28 | + && echo 'alias unalias="echo \"unalias: restricted\"; false"' >> ${DRYCC_HOME_DIR}/.bash_aliases \ |
| 29 | + && ln -s /usr/bin/ls /usr/local/bin/ls \ |
| 30 | + && ln -s /usr/bin/cat /usr/local/bin/cat \ |
| 31 | + && ln -s /usr/bin/sed /usr/local/bin/sed \ |
| 32 | + && ln -s /usr/bin/find /usr/local/bin/find \ |
| 33 | + && ln -s /usr/bin/bash /usr/local/bin/bash \ |
| 34 | + && ln -s /usr/bin/mkdir /usr/local/bin/mkdir \ |
| 35 | + && ln -s /usr/bin/sleep /usr/local/bin/sleep \ |
| 36 | + && ln -s /usr/bin/dircolors /usr/local/bin/dircolors \ |
| 37 | + && ln -s /usr/bin/tini /usr/local/bin/tini \ |
| 38 | + && ln -s /usr/bin/init-stack /usr/local/bin/init-stack |
| 39 | + |
| 40 | +ENTRYPOINT [ "/entrypoint.sh" ] |
| 41 | + |
| 42 | +ENV PATH=/usr/local/bin |
| 43 | + |
| 44 | +USER ${DRYCC_UID} |
| 45 | +WORKDIR ${DRYCC_HOME_DIR} |
0 commit comments