1
- FROM adoptopenjdk/openjdk11:jre-11.0.8_10-alpine
2
-
3
- # symlink JVM
4
- RUN mkdir -p /usr/lib/jvm/default-jvm /usr/java/latest \
5
- && ln -sf /opt/java/openjdk /usr/lib/jvm/default-jvm/jre \
6
- && ln -sf /usr/lib/jvm/default-jvm/jre /usr/java/latest/jre
1
+ FROM bellsoft/liberica-openjre-alpine:11
7
2
8
3
# ===============
9
4
# Alpine packages
10
5
# ===============
11
6
12
7
RUN apk update \
13
- && apk add --no-cache py3-pip openssl tini \
14
- && apk add --no-cache --virtual build-deps git wget
15
-
16
- # ======
17
- # rclone
18
- # ======
19
-
20
- ARG RCLONE_VERSION=v1.51.0
21
- RUN wget -q https://github.com/rclone/rclone/releases/download/${RCLONE_VERSION}/rclone-${RCLONE_VERSION}-linux-amd64.zip -O /tmp/rclone.zip \
22
- && unzip -qq /tmp/rclone.zip -d /tmp \
23
- && mv /tmp/rclone-${RCLONE_VERSION}-linux-amd64/rclone /usr/bin/ \
24
- && rm -rf /tmp/rclone-${RCLONE_VERSION}-linux-amd64 /tmp/rclone.zip
8
+ && apk add --no-cache py3-pip openssl tini py3-cryptography py3-lxml py3-psycopg2 py3-grpcio \
9
+ && apk add --no-cache --virtual build-deps git wget \
10
+ && mkdir -p /usr/java/latest \
11
+ && ln -sf /usr/lib/jvm/jre /usr/java/latest/jre
25
12
26
13
# =====
27
14
# Jetty
28
15
# =====
29
16
30
- ARG JETTY_VERSION=9.4.26.v20200117
17
+ ARG JETTY_VERSION=10.0.6
31
18
ARG JETTY_HOME=/opt/jetty
32
- ARG JETTY_BASE=/opt/gluu /jetty
19
+ ARG JETTY_BASE=/opt/jans /jetty
33
20
ARG JETTY_USER_HOME_LIB=/home/jetty/lib
34
21
35
22
# Install jetty
36
- RUN wget -q https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution /${JETTY_VERSION}/jetty-distribution -${JETTY_VERSION}.tar.gz -O /tmp/jetty.tar.gz \
23
+ RUN wget -q https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home /${JETTY_VERSION}/jetty-home -${JETTY_VERSION}.tar.gz -O /tmp/jetty.tar.gz \
37
24
&& mkdir -p /opt \
38
25
&& tar -xzf /tmp/jetty.tar.gz -C /opt \
39
- && mv /opt/jetty-distribution -${JETTY_VERSION} ${JETTY_HOME} \
26
+ && mv /opt/jetty-home -${JETTY_VERSION} ${JETTY_HOME} \
40
27
&& rm -rf /tmp/jetty.tar.gz
41
28
42
29
# Ports required by jetty
@@ -46,38 +33,25 @@ EXPOSE 8080
46
33
# Casa
47
34
# ====
48
35
49
- # @TODO: change this as soon as 4.2.2 -SNAPSHOT is available
50
- ENV GLUU_VERSION=4.2.1.Final
51
- ENV GLUU_BUILD_DATE= "2020-09-24 08:34"
36
+ ENV GLUU_VERSION=5.0.0 -SNAPSHOT
37
+ ENV GLUU_BUILD_DATE= "2022-01-08 18:32"
38
+ ENV GLUU_SOURCE_URL=https://jenkins.gluu.org/maven/org/gluu/casa/${GLUU_VERSION}/casa-${GLUU_VERSION}.war
52
39
53
40
# Install Casa
54
- RUN wget -q https://ox.gluu.org/maven/org/gluu/casa/${GLUU_VERSION}/casa-${GLUU_VERSION}.war -O /tmp/casa.war \
41
+ RUN wget -q ${GLUU_SOURCE_URL} -O /tmp/casa.war \
55
42
&& mkdir -p ${JETTY_BASE}/casa/webapps/casa \
56
43
&& unzip -qq /tmp/casa.war -d ${JETTY_BASE}/casa/webapps/casa \
57
- && java -jar ${JETTY_HOME}/start.jar jetty.home=${JETTY_HOME} jetty.base=${JETTY_BASE}/casa --add-to-start=server,deploy,resources,http,http-forwarded,jsp \
58
- && rm -f /tmp/casa.war
59
-
60
- # ===========
61
- # Custom libs
62
- # ===========
63
-
64
- RUN mkdir -p /usr/share/java
65
-
66
- ARG TWILIO_VERSION=7.17.0
67
- RUN wget -q https://repo1.maven.org/maven2/com/twilio/sdk/twilio/${TWILIO_VERSION}/twilio-${TWILIO_VERSION}.jar -O /usr/share/java/twilio.jar
68
-
69
- ARG JSMPP_VERSION=2.3.7
70
- RUN wget -q https://repo1.maven.org/maven2/org/jsmpp/jsmpp/${JSMPP_VERSION}/jsmpp-${JSMPP_VERSION}.jar -O /usr/share/java/jsmpp.jar
44
+ && java -jar ${JETTY_HOME}/start.jar jetty.home=${JETTY_HOME} jetty.base=${JETTY_BASE}/casa --add-module=server,deploy,resources,http,jsp,cdi-decorate \
45
+ && rm -f /tmp/casa.war \
46
+ && rm -f ${JETTY_BASE}/casa/webapps/casa/WEB-INF/jetty-web.xml
71
47
72
48
# ======
73
49
# Python
74
50
# ======
75
51
76
- RUN apk add --no-cache py3-cryptography
77
52
COPY requirements.txt /app/requirements.txt
78
- RUN pip3 install -U pip \
79
- && pip3 install --no-cache-dir -r /app/requirements.txt \
80
- && rm -rf /src/pygluu-containerlib/.git
53
+ RUN pip3 install -U pip wheel \
54
+ && pip3 install -r /app/requirements.txt --no-cache-dir
81
55
82
56
# =======
83
57
# Cleanup
@@ -97,67 +71,84 @@ COPY LICENSE /licenses/
97
71
# Config ENV
98
72
# ==========
99
73
100
- ENV GLUU_CONFIG_ADAPTER=consul \
101
- GLUU_CONFIG_CONSUL_HOST=localhost \
102
- GLUU_CONFIG_CONSUL_PORT=8500 \
103
- GLUU_CONFIG_CONSUL_CONSISTENCY=stale \
104
- GLUU_CONFIG_CONSUL_SCHEME=http \
105
- GLUU_CONFIG_CONSUL_VERIFY=false \
106
- GLUU_CONFIG_CONSUL_CACERT_FILE=/etc/certs/consul_ca.crt \
107
- GLUU_CONFIG_CONSUL_CERT_FILE=/etc/certs/consul_client.crt \
108
- GLUU_CONFIG_CONSUL_KEY_FILE=/etc/certs/consul_client.key \
109
- GLUU_CONFIG_CONSUL_TOKEN_FILE=/etc/certs/consul_token \
110
- GLUU_CONFIG_KUBERNETES_NAMESPACE=default \
111
- GLUU_CONFIG_KUBERNETES_CONFIGMAP=gluu \
112
- GLUU_CONFIG_KUBERNETES_USE_KUBE_CONFIG=false
74
+ ENV CN_CONFIG_ADAPTER=consul \
75
+ CN_CONFIG_CONSUL_HOST=localhost \
76
+ CN_CONFIG_CONSUL_PORT=8500 \
77
+ CN_CONFIG_CONSUL_CONSISTENCY=stale \
78
+ CN_CONFIG_CONSUL_SCHEME=http \
79
+ CN_CONFIG_CONSUL_VERIFY=false \
80
+ CN_CONFIG_CONSUL_CACERT_FILE=/etc/certs/consul_ca.crt \
81
+ CN_CONFIG_CONSUL_CERT_FILE=/etc/certs/consul_client.crt \
82
+ CN_CONFIG_CONSUL_KEY_FILE=/etc/certs/consul_client.key \
83
+ CN_CONFIG_CONSUL_TOKEN_FILE=/etc/certs/consul_token \
84
+ CN_CONFIG_CONSUL_NAMESPACE=jans \
85
+ CN_CONFIG_KUBERNETES_NAMESPACE=default \
86
+ CN_CONFIG_KUBERNETES_CONFIGMAP=jans \
87
+ CN_CONFIG_KUBERNETES_USE_KUBE_CONFIG=false \
88
+ CN_CONFIG_GOOGLE_SECRET_VERSION_ID=latest \
89
+ CN_CONFIG_GOOGLE_SECRET_NAME_PREFIX=jans
113
90
114
91
# ==========
115
92
# Secret ENV
116
93
# ==========
117
94
118
- ENV GLUU_SECRET_ADAPTER=vault \
119
- GLUU_SECRET_VAULT_SCHEME=http \
120
- GLUU_SECRET_VAULT_HOST=localhost \
121
- GLUU_SECRET_VAULT_PORT=8200 \
122
- GLUU_SECRET_VAULT_VERIFY=false \
123
- GLUU_SECRET_VAULT_ROLE_ID_FILE=/etc/certs/vault_role_id \
124
- GLUU_SECRET_VAULT_SECRET_ID_FILE=/etc/certs/vault_secret_id \
125
- GLUU_SECRET_VAULT_CERT_FILE=/etc/certs/vault_client.crt \
126
- GLUU_SECRET_VAULT_KEY_FILE=/etc/certs/vault_client.key \
127
- GLUU_SECRET_VAULT_CACERT_FILE=/etc/certs/vault_ca.crt \
128
- GLUU_SECRET_KUBERNETES_NAMESPACE=default \
129
- GLUU_SECRET_KUBERNETES_SECRET=gluu \
130
- GLUU_SECRET_KUBERNETES_USE_KUBE_CONFIG=false
95
+ ENV CN_SECRET_ADAPTER=vault \
96
+ CN_SECRET_VAULT_SCHEME=http \
97
+ CN_SECRET_VAULT_HOST=localhost \
98
+ CN_SECRET_VAULT_PORT=8200 \
99
+ CN_SECRET_VAULT_VERIFY=false \
100
+ CN_SECRET_VAULT_ROLE_ID_FILE=/etc/certs/vault_role_id \
101
+ CN_SECRET_VAULT_SECRET_ID_FILE=/etc/certs/vault_secret_id \
102
+ CN_SECRET_VAULT_CERT_FILE=/etc/certs/vault_client.crt \
103
+ CN_SECRET_VAULT_KEY_FILE=/etc/certs/vault_client.key \
104
+ CN_SECRET_VAULT_CACERT_FILE=/etc/certs/vault_ca.crt \
105
+ CN_SECRET_VAULT_NAMESPACE=jans \
106
+ CN_SECRET_KUBERNETES_NAMESPACE=default \
107
+ CN_SECRET_KUBERNETES_SECRET=jans \
108
+ CN_SECRET_KUBERNETES_USE_KUBE_CONFIG=false \
109
+ CN_SECRET_GOOGLE_SECRET_MANAGER_PASSPHRASE=secret \
110
+ CN_SECRET_GOOGLE_SECRET_VERSION_ID=latest \
111
+ CN_SECRET_GOOGLE_SECRET_NAME_PREFIX=jans
131
112
132
113
# ===============
133
114
# Persistence ENV
134
115
# ===============
135
116
136
- ENV GLUU_PERSISTENCE_TYPE=ldap \
137
- GLUU_PERSISTENCE_LDAP_MAPPING=default \
138
- GLUU_LDAP_URL=localhost:1636 \
139
- GLUU_COUCHBASE_URL=localhost \
140
- GLUU_COUCHBASE_USER=admin \
141
- GLUU_COUCHBASE_CERT_FILE=/etc/certs/couchbase.crt \
142
- GLUU_COUCHBASE_PASSWORD_FILE=/etc/gluu/conf/couchbase_password \
143
- GLUU_COUCHBASE_CONN_TIMEOUT=10000 \
144
- GLUU_COUCHBASE_CONN_MAX_WAIT=20000
117
+ ENV CN_PERSISTENCE_TYPE=ldap \
118
+ CN_PERSISTENCE_LDAP_MAPPING=default \
119
+ CN_LDAP_URL=localhost:1636 \
120
+ CN_LDAP_USE_SSL=true \
121
+ CN_COUCHBASE_URL=localhost \
122
+ CN_COUCHBASE_USER=admin \
123
+ CN_COUCHBASE_CERT_FILE=/etc/certs/couchbase.crt \
124
+ CN_COUCHBASE_PASSWORD_FILE=/etc/jans/conf/couchbase_password \
125
+ CN_COUCHBASE_CONN_TIMEOUT=10000 \
126
+ CN_COUCHBASE_CONN_MAX_WAIT=20000 \
127
+ CN_COUCHBASE_SCAN_CONSISTENCY=not_bounded \
128
+ CN_COUCHBASE_BUCKET_PREFIX=jans \
129
+ CN_COUCHBASE_TRUSTSTORE_ENABLE=true \
130
+ CN_COUCHBASE_KEEPALIVE_INTERVAL=30000 \
131
+ CN_COUCHBASE_KEEPALIVE_TIMEOUT=2500 \
132
+ CN_GOOGLE_SPANNER_INSTANCE_ID="" \
133
+ CN_GOOGLE_SPANNER_DATABASE_ID=""
145
134
146
135
# ===========
147
136
# Generic ENV
148
137
# ===========
149
138
150
- ENV GLUU_MAX_RAM_PERCENTAGE=75.0 \
151
- GLUU_WAIT_MAX_TIME=300 \
152
- GLUU_WAIT_SLEEP_DURATION=10 \
153
- GLUU_OXD_SERVER_URL=https://localhost:8443 \
154
- GLUU_OXAUTH_BACKEND=localhost:8081 \
155
- GLUU_JAVA_OPTIONS="" \
156
- GLUU_DOCUMENT_STORE_TYPE=LOCAL \
157
- GLUU_JACKRABBIT_URL=http://localhost:8080 \
158
- GLUU_JACKRABBIT_ADMIN_ID=admin \
159
- GLUU_JACKRABBIT_ADMIN_PASSWORD_FILE=/etc/gluu/conf/jackrabbit_admin_password \
160
- GLUU_SSL_CERT_FROM_SECRETS=false
139
+ ENV CN_MAX_RAM_PERCENTAGE=75.0 \
140
+ CN_WAIT_MAX_TIME=300 \
141
+ CN_WAIT_SLEEP_DURATION=10 \
142
+ PYTHON_HOME=/opt/jython \
143
+ CN_DOCUMENT_STORE_TYPE=LOCAL \
144
+ CN_JACKRABBIT_URL=http://localhost:8080 \
145
+ CN_JACKRABBIT_ADMIN_ID=admin \
146
+ CN_JACKRABBIT_ADMIN_PASSWORD_FILE=/etc/jans/conf/jackrabbit_admin_password \
147
+ CN_JAVA_OPTIONS="" \
148
+ CN_AUTH_SERVER_BACKEND=localhost:8081 \
149
+ CN_SSL_CERT_FROM_SECRETS=false \
150
+ GOOGLE_PROJECT_ID="" \
151
+ GOOGLE_APPLICATION_CREDENTIALS=/etc/jans/conf/google-credentials.json
161
152
162
153
# ==========
163
154
# misc stuff
@@ -166,24 +157,43 @@ ENV GLUU_MAX_RAM_PERCENTAGE=75.0 \
166
157
LABEL name="Casa" \
167
158
maintainer=
"Gluu Inc. <[email protected] >" \
168
159
vendor="Gluu Federation" \
169
- version="4.2.2 " \
160
+ version="5.0.0 " \
170
161
release="dev" \
171
162
summary="Gluu Casa" \
172
163
description="Self-service portal for people to manage their account security preferences in the Gluu Server, like 2FA"
173
164
174
165
RUN mkdir -p /etc/certs \
175
- /etc/gluu/conf/casa \
176
- /opt/gluu/python/libs \
177
- /opt/gluu/jetty/casa/static \
178
- /opt/gluu/jetty/casa/plugins \
179
- /deploy \
166
+ /etc/jans/conf/casa \
167
+ /opt/jans/python/libs \
168
+ /opt/jans/jetty/casa/static \
169
+ /opt/jans/jetty/casa/plugins \
180
170
/app/templates \
181
171
/app/tmp
182
172
173
+ COPY jetty/jetty-env.xml ${JETTY_BASE}/casa/webapps/casa/WEB-INF/
174
+ COPY jetty/log4j2.xml ${JETTY_BASE}/casa/resources/
175
+ COPY jetty/casa_web_resources.xml ${JETTY_BASE}/casa/webapps/
183
176
COPY templates /app/templates/
184
177
COPY scripts /app/scripts
185
- RUN chmod +x /app/scripts/entrypoint.sh \
186
- && cp /app/templates/casa_web_resources.xml /opt/gluu/jetty/casa/webapps/
178
+ RUN chmod +x /app/scripts/entrypoint.sh
179
+
180
+ # create non-root user
181
+ RUN adduser -s /bin/sh -D -G root -u 1000 jetty
182
+
183
+ # adjust ownership
184
+ RUN chown -R 1000:1000 /opt/jans/jetty \
185
+ && chown -R 1000:1000 /opt/jetty \
186
+ && chown -R 1000:1000 /tmp \
187
+ && chgrp -R 0 /opt/jans/jetty && chmod -R g=u /opt/jans/jetty \
188
+ && chgrp -R 0 /opt/jetty && chmod -R g=u /opt/jetty \
189
+ && chgrp -R 0 /tmp && chmod -R g=u /tmp \
190
+ && chgrp -R 0 /etc/certs && chmod -R g=u /etc/certs \
191
+ && chgrp -R 0 /etc/jans && chmod -R g=u /etc/jans \
192
+ && chmod -R +w /usr/java/latest/jre/lib/security/cacerts && chgrp -R 0 /usr/java/latest/jre/lib/security/cacerts && chmod -R g=u /usr/java/latest/jre/lib/security/cacerts \
193
+ && chmod 664 /opt/jetty/etc/jetty.xml \
194
+ && chmod 664 /opt/jetty/etc/webdefault.xml
195
+
196
+ USER 1000
187
197
188
198
ENTRYPOINT ["tini" , "-e" , "143" , "-g" , "--" ]
189
199
CMD ["sh" , "/app/scripts/entrypoint.sh" ]
0 commit comments