-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathDockerfile
113 lines (91 loc) · 4.47 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
ARG TOMCAT_VERSION=9
ARG TOMCAT_JRE=jdk8-openjdk-buster
FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE} AS builder
ARG PREFIX_DIR=/usr/local/guacamole
ARG GUACD_VER=1.3.0
ARG DEBIAN_RELEASE=buster-backports
RUN curl -o /etc/apt/sources.list "https://mirrors.163.com/.help/sources.list.buster" && \
grep " ${DEBIAN_RELEASE} " /etc/apt/sources.list || echo >> /etc/apt/sources.list \
"deb http://mirrors.163.com/debian/ ${DEBIAN_RELEASE} main contrib non-free"
# Do not require interaction during build
ARG DEBIAN_FRONTEND=noninteractive
ARG BUILD_DEPENDENCIES=" \
autoconf \
automake \
freerdp2-dev \
gcc \
libcairo2-dev \
libjpeg62-turbo-dev \
libossp-uuid-dev \
libpango1.0-dev \
libpulse-dev \
libssh2-1-dev \
libssl-dev \
libtelnet-dev \
libtool \
libvncserver-dev \
libwebsockets-dev \
libwebp-dev \
make"
# Bring build environment up to date and install build dependencies
RUN apt-get update && \
apt-get install -t ${DEBIAN_RELEASE} -y $BUILD_DEPENDENCIES && \
rm -rf /var/lib/apt/lists/*
RUN curl -SLO "http://download.jumpserver.org/public/guacamole-server-${GUACD_VER}.tar.gz" && ls \
&& tar -xzf guacamole-server-${GUACD_VER}.tar.gz && mkdir ${PREFIX_DIR} \
&& cp -r guacamole-server-${GUACD_VER}/src/guacd-docker/bin ${PREFIX_DIR}/bin/
RUN ${PREFIX_DIR}/bin/build-guacd.sh guacamole-server-${GUACD_VER} "$PREFIX_DIR"
RUN ${PREFIX_DIR}/bin/list-dependencies.sh \
${PREFIX_DIR}/sbin/guacd \
${PREFIX_DIR}/lib/libguac-client-*.so \
${PREFIX_DIR}/lib/freerdp2/*guac*.so \
> ${PREFIX_DIR}/DEPENDENCIES
FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE}
ARG PREFIX_DIR=/usr/local/guacamole
ARG VERSION=v2.2.0
ENV JMS_VERSION=${VERSION}
ENV ARCH=amd64 \
GUACAMOLE_HOME=/config/guacamole
# Runtime environment
ENV LC_ALL=C.UTF-8
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PREFIX_DIR}/lib
ENV GUACD_LOG_LEVEL=debug
ARG RUNTIME_DEPENDENCIES=" \
netcat-openbsd \
ca-certificates \
ghostscript \
fonts-liberation \
fonts-dejavu \
xfonts-terminus"
COPY --from=builder ${PREFIX_DIR} ${PREFIX_DIR}
ARG DEBIAN_RELEASE=buster-backports
RUN curl -o /etc/apt/sources.list "https://mirrors.163.com/.help/sources.list.buster" && \
grep " ${DEBIAN_RELEASE} " /etc/apt/sources.list || echo >> /etc/apt/sources.list \
"deb http://mirrors.163.com/debian/ ${DEBIAN_RELEASE} main contrib non-free"
# Do not require interaction during build
ARG DEBIAN_FRONTEND=noninteractive
# Bring runtime environment up to date and install runtime dependencies
RUN apt-get update && \
apt-get install -t ${DEBIAN_RELEASE} -y --no-install-recommends $RUNTIME_DEPENDENCIES && \
apt-get install -t ${DEBIAN_RELEASE} -y --no-install-recommends $(cat "${PREFIX_DIR}"/DEPENDENCIES) && \
rm -rf /var/lib/apt/lists/*
# Link FreeRDP plugins into proper path
RUN ${PREFIX_DIR}/bin/link-freerdp-plugins.sh \
${PREFIX_DIR}/lib/freerdp2/libguac*.so
ADD http://download.jumpserver.org/public/s6-overlay-${ARCH}.tar.gz /tmp/
RUN tar -xzf /tmp/s6-overlay-${ARCH}.tar.gz -C / \
&& tar -xzf /tmp/s6-overlay-${ARCH}.tar.gz -C /usr ./bin \
&& rm -rf /tmp/s6-overlay-${ARCH}.tar.gz
WORKDIR ${GUACAMOLE_HOME}
RUN rm -rf ${CATALINA_HOME}/webapps/ROOT \
&& mkdir -p ${GUACAMOLE_HOME}/extensions
COPY etc /etc/
COPY guacamole.properties ${GUACAMOLE_HOME}/
ADD http://download.jumpserver.org/public/ssh-forward.tar.gz /tmp/
RUN tar xvf /tmp/ssh-forward.tar.gz -C /bin/ && chmod +x /bin/ssh-forward
ADD http://download.jumpserver.org/release/${JMS_VERSION}/guacamole-client-${JMS_VERSION}.tar.gz /tmp/
RUN tar -xzf /tmp/guacamole-client-${JMS_VERSION}.tar.gz \
&& cp guacamole-client-${JMS_VERSION}/guacamole-*.war ${CATALINA_HOME}/webapps/ROOT.war \
&& cp guacamole-client-${JMS_VERSION}/guacamole-*.jar ${GUACAMOLE_HOME}/extensions/ \
&& rm -rf /tmp/guacamole-client-${JMS_VERSION}.tar.gz guacamole-client-${JMS_VERSION}
ENTRYPOINT ["/init"]