-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.ubuntu-prebuilt
More file actions
179 lines (142 loc) · 6.62 KB
/
Dockerfile.ubuntu-prebuilt
File metadata and controls
179 lines (142 loc) · 6.62 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
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# Change TAG to your specific production version (6.2.0.0-base or higher). It's not recommended to keep "latest".
# The full list of tags is available here: https://hub.docker.com/r/webspellchecker/wproofreader/tags.
# When used for the first time, it is recommended to choose the latest available.
ARG TAG=base
# Specify license ticket ID to activate the license during the image build. For example, WPR_LICENSE_TICKET_ID = 6u*************ZO
ARG WPR_LICENSE_TICKET_ID
ARG WPR_USER_ID=2000
ARG WPR_GROUP_ID=2000
ARG WPR_USER_NAME=wsc
FROM webspellchecker/wproofreader:${TAG} AS wpr_install_languages
USER root
# Comma-separated list of language IDs to install
ARG WPR_LANGUAGES=en_US,en_GB,en_CA,en_AU
# List of AI models to install:
# 1. English language model
# 2. English autocomplete model
# 3. German language model
# 4. Spanish language model
ARG WPR_AI_MODELS=1,2
ARG WPR_USER_ID
ARG WPR_GROUP_ID
ARG WPR_USER_NAME
ARG WPR_LICENSE_TICKET_ID
RUN apt-get update && apt-get install -y --no-install-recommends wget
RUN if [ -z $(egrep -i "^${WPR_USER_NAME}" /etc/group) ]; then \
groupadd -g ${WPR_GROUP_ID} ${WPR_USER_NAME} && useradd -u ${WPR_USER_ID} -g ${WPR_GROUP_ID} ${WPR_USER_NAME}; \
fi;
# Remove installed languages files/configuration
RUN sed -i '/<Languages[^>]*>/,/<\/Languages>/{//!d}' ${WPR_APP_SERVER_DIR}/AppServerX.xml && \
sed -i 's/\(<Model\ *Enabled="\)\w*"/\1false"/g' ${WPR_APP_SERVER_DIR}/AppServerX.xml && \
rm -rf ${WPR_WSC_SERVICE_FILES_PATH}/Resources/Hunspell/ && \
rm -rf ${WPR_APP_SERVER_DIR}/autocomplete/neural/ && \
rm -rf ${WPR_APP_SERVER_DIR}/grammar/neural/ && \
find ${WPR_APP_SERVER_DIR}/Resources/en -type f -name "*_medical.dic" -delete && \
find ${WPR_APP_SERVER_DIR}/Resources -type f -name "ner_model_*.dat" -delete
RUN perl ${WPR_APP_SERVER_DIR}/install_languages.pl ${WPR_APP_SERVER_DIR}/AppServerX.xml "${WPR_AI_MODELS}" "${WPR_LANGUAGES}" "${WPR_WSC_SERVICE_FILES_PATH}"
RUN if [ ! -z "${WPR_LICENSE_TICKET_ID}" ]; then \
sh ${WPR_APP_SERVER_DIR}/activateLicense.sh ${WPR_LICENSE_TICKET_ID} -y; \
fi;
RUN chown -R ${WPR_USER_ID}:${WPR_GROUP_ID} ${WPR_WSC_SERVICE_FILES_PATH} \
${WPR_DICTIONARIES_DIR} \
${WPR_CERT_DIR} \
${WPR_APP_INSTALL_DIR}
FROM ubuntu:24.04 AS wpr_service
USER root
RUN apt-get update && \
apt-get upgrade -y perl && \
apt-get install -y --no-install-recommends nginx default-jre openssl && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /etc/nginx/sites-enabled/default /var/www/html/* && \
rm -rf /var/log/nginx/* && \
ln -sf /dev/stderr /var/log/nginx/error.log
ARG WPR_WEB_SERVER_PORT=8080
ARG WPR_WEB_SERVER_SSL_PORT=8443
ARG WPR_USER_ID
ARG WPR_GROUP_ID
ARG WPR_USER_NAME
EXPOSE $WPR_WEB_SERVER_PORT
EXPOSE $WPR_WEB_SERVER_SSL_PORT
EXPOSE 2880
ENV WPR_WEB_SERVER_PORT=${WPR_WEB_SERVER_PORT}
ENV WPR_WEB_SERVER_SSL_PORT=${WPR_WEB_SERVER_SSL_PORT}
ARG WPR_DICTIONARIES_DIR=/dictionaries
ARG WPR_CUSTOM_DICTIONARIES_DIR=$WPR_DICTIONARIES_DIR/CustomDictionaries
ARG WPR_USER_DICTIONARIES_DIR=$WPR_DICTIONARIES_DIR/UserDictionaries
ARG WPR_STYLE_GUIDE_DIR=$WPR_DICTIONARIES_DIR/StyleGuide
ARG WPR_CERT_DIR=/certificate
ARG WPR_CERT_KEY_NAME=key.pem
ARG WPR_CERT_FILE_NAME=cert.pem
ARG WPR_APP_INSTALL_DIR=/opt/WebSpellChecker
ARG WPR_APP_SERVER_DIR=$WPR_APP_INSTALL_DIR/AppServer
ARG WPR_PATH_TO_SERVICE_FILES_DIRECTORY=/var/lib
ARG WPR_WSC_SERVICE_FILES_PATH=$WPR_PATH_TO_SERVICE_FILES_DIRECTORY/WebSpellChecker
ENV WPR_APP_SERVER_DIR=${WPR_APP_SERVER_DIR}
# Application installation parameters
# Protocol of the NGINX web server (1 - HTTPS, 2 - HTTP)
ARG WPR_PROTOCOL=2
# Web port outside the container. If value isn't specified (e.g. empty), the default value will be used (443 for HTTPS and 80 for HTTP).
ARG WPR_WEB_PORT
ARG WPR_VIRTUAL_DIR=wscservice
ARG WPR_LICENSE_TICKET_ID
# Proxy server settings
# If you are using a proxy server to handle inbound/outbound traffic to your network, for the automated license activation step, the following proxy settings must be added.
ARG WPR_ENABLE_PROXY=0
ARG WPR_PROXY_HOST
ARG WPR_PROXY_PORT
ARG WPR_PROXY_USER_NAME
ARG WPR_PROXY_PASSWORD
# Access Key for Custom Dictionary and Style Guide API
ARG WPR_ACCESS_KEY
ENV WPR_CONFIG_USE_ENV=true
ENV WPR_PROTOCOL=${WPR_PROTOCOL}
ENV WPR_WEB_PORT=${WPR_WEB_PORT}
ENV WPR_VIRTUAL_DIR=${WPR_VIRTUAL_DIR}
ENV WPR_LICENSE_TICKET_ID=${WPR_LICENSE_TICKET_ID}
ENV WPR_PATH_TO_SERVICE_FILES_DIRECTORY=${WPR_PATH_TO_SERVICE_FILES_DIRECTORY}
ENV WPR_WSC_SERVICE_FILES_PATH=${WPR_WSC_SERVICE_FILES_PATH}
ENV WPR_CERT_DIR=${WPR_CERT_DIR}
ENV WPR_CERT_KEY_NAME=${WPR_CERT_KEY_NAME}
ENV WPR_CERT_FILE_NAME=${WPR_CERT_FILE_NAME}
ENV WPR_DICTIONARIES_DIR=${WPR_DICTIONARIES_DIR}
ENV WPR_CUSTOM_DICTIONARIES_DIR=${WPR_CUSTOM_DICTIONARIES_DIR}
ENV WPR_USER_DICTIONARIES_DIR=${WPR_USER_DICTIONARIES_DIR}
ENV WPR_STYLE_GUIDE_DIR=${WPR_STYLE_GUIDE_DIR}
# The log size must be set to 0 for Docker.
ENV WPR_SIZE=0
ENV WPR_ENABLE_PROXY=${WPR_ENABLE_PROXY}
ENV WPR_PROXY_HOST=${WPR_PROXY_HOST}
ENV WPR_PROXY_PORT=${WPR_PROXY_PORT}
ENV WPR_PROXY_USER_NAME=${WPR_PROXY_USER_NAME}
ENV WPR_PROXY_PASSWORD=${WPR_PROXY_PASSWORD}
# Database for collecting statistics
ENV WPR_ENABLE_DATABASE_PROVIDER=false
ENV WPR_DATABASE_HOST=''
ENV WPR_DATABASE_PORT=3306
ENV WPR_DATABASE_SCHEMA=''
ENV WPR_DATABASE_USER=''
ENV WPR_DATABASE_PASSWORD=''
ENV WPR_ENABLE_REQUEST_STATISTIC=false
ENV WPR_REQUEST_STATISTIC_DATA_TYPE=DATABASE
ENV WPR_ENABLE_USER_ACTION_STATISTIC=false
ENV WPR_ENABLE_REQUEST_VALIDATION=false
ENV WPR_ACCESS_KEY=${WPR_ACCESS_KEY}
ENV DEBIAN_FRONTEND=noninteractive
RUN groupadd --gid ${WPR_GROUP_ID} $WPR_USER_NAME && useradd --no-log-init --uid ${WPR_USER_ID} --gid ${WPR_GROUP_ID} $WPR_USER_NAME
COPY --from=wpr_install_languages --chown=${WPR_USER_ID}:${WPR_GROUP_ID} /opt/WebSpellChecker ${WPR_APP_INSTALL_DIR}
COPY --from=wpr_install_languages --chown=${WPR_USER_ID}:${WPR_GROUP_ID} /var/lib/WebSpellChecker ${WPR_WSC_SERVICE_FILES_PATH}
COPY --from=wpr_install_languages --chown=${WPR_USER_ID}:${WPR_GROUP_ID} /etc/nginx/conf.d/wscservice.conf /etc/nginx/conf.d/wscservice.conf
COPY --from=wpr_install_languages --chown=${WPR_USER_ID}:${WPR_GROUP_ID} /etc/nginx/nginx.conf /etc/nginx/nginx.conf
COPY --from=wpr_install_languages --chown=${WPR_USER_ID}:${WPR_GROUP_ID} /dictionaries ${WPR_DICTIONARIES_DIR}
RUN mkdir -p $WPR_CERT_DIR && chown ${WPR_USER_ID}:${WPR_GROUP_ID} $WPR_CERT_DIR
RUN mkdir -p /var/run/nginx && \
chown -R ${WPR_USER_ID}:${WPR_GROUP_ID} /etc/nginx \
/var/run/nginx \
/var/log/nginx \
/usr/sbin/nginx \
/var/lib/nginx \
/etc/nginx
USER $WPR_USER_NAME
WORKDIR $WPR_APP_SERVER_DIR
ENTRYPOINT ["sh", "-c", "${WPR_APP_SERVER_DIR}/startService.sh"]