Skip to content

Commit 1914381

Browse files
committed
Initial commit
0 parents  commit 1914381

8 files changed

Lines changed: 821 additions & 0 deletions

File tree

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto

LICENSE

Lines changed: 504 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Docker environment for the Phoenix CTMS
2+
3+
This environment is not intended for production use, but rather for system testing and evaluation.
4+
It is based on `install.sh` from the [phoenixctms/ctsms](https://github.com/phoenixctms/ctsms) repository.
5+
6+
The Perl environment for `bulk-processor` is incomplete and not functional at this time.
7+
8+
## Building the environment
9+
10+
The Phoenix container is built in two stages. The first stage downloads and compiles the system. The second stage copies the required build artifacts into a `tomcat:8` container, and conifgures that container to run Phoenix.
11+
12+
```bash
13+
docker-compose build
14+
```
15+
16+
## Starting up
17+
18+
See `docker-compose.yml` for the components of the system. Note that the PostgreSQL database state is stored in a named volume.
19+
20+
Start up the environment:
21+
22+
```bash
23+
docker-compose up
24+
```
25+
26+
The first time you bring up the system, you'll need to run the initial database setup.
27+
28+
```
29+
$ docker-compose exec phoenix bash
30+
bash /dbsetup.sh
31+
```
32+
33+
This should run through cleanly, and at the end it will output randomly generated passwords for the user, department and cron (not yet set up in this environment.)
34+
35+
## Logging in
36+
37+
Once the environment is running and initial setup is complete, you can log in.
38+
39+
Go to [http://localhost:8888](http://localhost:8888)
40+
41+
Log in as `phoenix` with the password provided when you ran `dbsetup.sh`.

bulk-processor/Dockerfile

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
FROM perl:5-threaded
2+
3+
RUN apt-get update && apt-get install -y \
4+
libarchive-zip-perl \
5+
libconfig-any-perl \
6+
libdata-dump-perl \
7+
libdata-dumper-concise-perl \
8+
libdata-uuid-perl \
9+
libdata-validate-ip-perl \
10+
libdate-calc-perl \
11+
libdate-manip-perl \
12+
libdatetime-format-iso8601-perl \
13+
libdatetime-format-strptime-perl \
14+
libdatetime-perl \
15+
libdatetime-timezone-perl \
16+
libdbd-csv-perl \
17+
libdbd-mysql-perl \
18+
libdbd-sqlite3-perl \
19+
libdigest-md5-perl \
20+
libemail-mime-attachment-stripper-perl \
21+
libemail-mime-perl \
22+
libgearman-client-perl \
23+
libhtml-parser-perl \
24+
libintl-perl \
25+
libio-compress-perl \
26+
libio-socket-ssl-perl \
27+
libjson-xs-perl \
28+
liblog-log4perl-perl \
29+
libmail-imapclient-perl \
30+
libmarpa-r2-perl \
31+
libmime-base64-perl \
32+
libmime-lite-perl \
33+
libmime-tools-perl \
34+
libnet-address-ip-local-perl \
35+
libnet-smtp-ssl-perl \
36+
libole-storage-lite-perl \
37+
libphp-serialization-perl \
38+
libexcel-writer-xlsx-perl \
39+
libspreadsheet-parseexcel-perl \
40+
libstring-mkpasswd-perl \
41+
libtext-csv-xs-perl \
42+
libtie-ixhash-perl \
43+
libtime-warp-perl \
44+
liburi-find-perl \
45+
libuuid-perl \
46+
libwww-perl \
47+
libxml-dumper-perl \
48+
libxml-libxml-perl \
49+
libyaml-libyaml-perl \
50+
libyaml-tiny-perl \
51+
libtemplate-perl \
52+
libdancer-perl \
53+
libdbd-pg-perl \
54+
libjson-perl \
55+
libplack-perl \
56+
libcache-memcached-perl \
57+
libdancer-session-memcached-perl \
58+
libgraphviz-perl \
59+
gnuplot \
60+
imagemagick \
61+
ghostscript \
62+
build-essential \
63+
libtest-utf8-perl \
64+
libmoosex-hasdefaults-perl \
65+
cpanminus \
66+
libsys-cpuaffinity-perl \
67+
&& rm -rf /var/lib/apt/lists/*
68+
69+
RUN cpanm --notest Dancer::Plugin::I18N
70+
RUN cpanm --notest DateTime::Format::Excel
71+
RUN cpanm --notest Spreadsheet::Reader::Format
72+
RUN cpanm --notest Spreadsheet::Reader::ExcelXML
73+
RUN cpanm --notest Tie::IxHash
74+
75+
# FIXME: should this be shared with the java environment in the Phoenix container?
76+
RUN mkdir -p /ctsms/bulk_processor
77+
78+
RUN wget --content-disposition https://github.com/phoenixctms/bulk-processor/archive/master.tar.gz -O /ctsms/bulk-processor.tar.gz \
79+
&& tar -zxvf /ctsms/bulk-processor.tar.gz -C /ctsms/bulk_processor --strip-components 1 \
80+
&& perl /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/WebApps/minify.pl --folder=/ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/WebApps/Signup \
81+
&& mkdir /ctsms/bulk_processor/output \
82+
&& chmod 755 /ctsms/bulk_processor -R \
83+
&& chmod 777 /ctsms/bulk_processor/output -R \
84+
&& rm /ctsms/bulk-processor.tar.gz
85+
86+
RUN wget https://raw.githubusercontent.com/phoenixctms/install-debian/master/ecrfdataexport.sh -O /ctsms/ecrfdataexport.sh
87+
RUN chmod 755 /ctsms/ecrfdataexport.sh
88+
RUN wget https://raw.githubusercontent.com/phoenixctms/install-debian/master/inquirydataexport.sh -O /ctsms/inquirydataexport.sh
89+
RUN chmod 755 /ctsms/inquirydataexport.sh

dbsetup.sh

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/ctsms/dbtool.sh -i -f
2+
/ctsms/dbtool.sh -icp /ctsms/master_data/criterion_property_definitions.csv
3+
/ctsms/dbtool.sh -ipd /ctsms/master_data/permission_definitions.csv
4+
/ctsms/dbtool.sh -imi /ctsms/master_data/mime.types -e ISO-8859-1
5+
/ctsms/dbtool.sh -ims /ctsms/master_data/mime.types -e ISO-8859-1
6+
/ctsms/dbtool.sh -imc /ctsms/master_data/mime.types -e ISO-8859-1
7+
/ctsms/dbtool.sh -imt /ctsms/master_data/mime.types -e ISO-8859-1
8+
/ctsms/dbtool.sh -imp /ctsms/master_data/mime.types -e ISO-8859-1
9+
/ctsms/dbtool.sh -immm /ctsms/master_data/mime.types -e ISO-8859-1
10+
/ctsms/dbtool.sh -imifi /ctsms/master_data/mime.types -e ISO-8859-1
11+
/ctsms/dbtool.sh -imsi /ctsms/master_data/mime.types -e ISO-8859-1
12+
/ctsms/dbtool.sh -impi /ctsms/master_data/mime.types -e ISO-8859-1
13+
/ctsms/dbtool.sh -imjf /ctsms/master_data/mime.types -e ISO-8859-1
14+
15+
/ctsms/dbtool.sh -it /ctsms/master_data/titles.csv -e ISO-8859-1
16+
/ctsms/dbtool.sh -ib /ctsms/master_data/kiverzeichnis_gesamt_de_1347893202433.csv -e ISO-8859-1
17+
/ctsms/dbtool.sh -ic /ctsms/master_data/countries.txt -e ISO-8859-1
18+
/ctsms/dbtool.sh -iz /ctsms/master_data/streetnames.csv -e utf-8
19+
/ctsms/dbtool.sh -is /ctsms/master_data/streetnames.csv -e utf-8
20+
21+
/ctsms/dbtool.sh -iis /ctsms/master_data/icd10gm2012syst_claml_20110923.xml -sl de
22+
/ctsms/dbtool.sh -iai /ctsms/master_data/icd10gm2012_alphaid_edv_ascii_20110930.txt -e ISO-8859-1 -isr icd10gm2012syst_claml_20110923
23+
/ctsms/dbtool.sh -ios /ctsms/master_data/ops2012syst_claml_20111103.xml -sl de
24+
/ctsms/dbtool.sh -ioc /ctsms/master_data/ops2011alpha_edv_ascii_20111031.txt -osr ops2012syst_claml_20111103
25+
/ctsms/dbtool.sh -ia /ctsms/master_data/asp_register_20181005.xls
26+
27+
DEPARTMENT_PASSWORD=$(pwgen 24 1)
28+
USER_PASSWORD=$(pwgen 24 1)
29+
/ctsms/dbtool.sh -cd -dlk my_department -dp "$DEPARTMENT_PASSWORD"
30+
/ctsms/dbtool.sh -cu -dlk my_department -dp "$DEPARTMENT_PASSWORD" -u "phoenix" -p "$USER_PASSWORD" -pp "INVENTORY_MASTER_ALL_DEPARTMENTS,STAFF_MASTER_ALL_DEPARTMENTS,COURSE_MASTER_ALL_DEPARTMENTS,TRIAL_MASTER_ALL_DEPARTMENTS,PROBAND_MASTER_ALL_DEPARTMENTS,USER_ALL_DEPARTMENTS,INPUT_FIELD_MASTER,MASS_MAIL_MASTER_ALL_DEPARTMENTS,INVENTORY_MASTER_SEARCH,STAFF_MASTER_SEARCH,COURSE_MASTER_SEARCH,TRIAL_MASTER_SEARCH,PROBAND_MASTER_SEARCH,USER_MASTER_SEARCH,INPUT_FIELD_MASTER_SEARCH,MASS_MAIL_MASTER_SEARCH"
31+
32+
/ctsms/dbtool.sh -cu -dlk my_department -dp "$DEPARTMENT_PASSWORD" -u "my_department_signup_de" -p "my_department_signup_de" -ul de -pp "INVENTORY_VIEW_USER_DEPARTMENT,STAFF_DETAIL_IDENTITY,COURSE_VIEW_USER_DEPARTMENT,TRIAL_SIGNUP,PROBAND_SIGNUP,USER_ACTIVE_USER,INPUT_FIELD_VIEW,MASS_MAIL_SIGNUP,INVENTORY_NO_SEARCH,STAFF_NO_SEARCH,COURSE_NO_SEARCH,TRIAL_NO_SEARCH,PROBAND_NO_SEARCH,USER_NO_SEARCH,INPUT_FIELD_NO_SEARCH,MASS_MAIL_NO_SEARCH"
33+
/ctsms/dbtool.sh -cu -dlk my_department -dp "$DEPARTMENT_PASSWORD" -u "my_department_signup_en" -p "my_department_signup_en" -ul en -pp "INVENTORY_VIEW_USER_DEPARTMENT,STAFF_DETAIL_IDENTITY,COURSE_VIEW_USER_DEPARTMENT,TRIAL_SIGNUP,PROBAND_SIGNUP,USER_ACTIVE_USER,INPUT_FIELD_VIEW,MASS_MAIL_SIGNUP,INVENTORY_NO_SEARCH,STAFF_NO_SEARCH,COURSE_NO_SEARCH,TRIAL_NO_SEARCH,PROBAND_NO_SEARCH,USER_NO_SEARCH,INPUT_FIELD_NO_SEARCH,MASS_MAIL_NO_SEARCH"
34+
35+
CRON_PASSWORD=$(pwgen 24 1)
36+
/ctsms/dbtool.sh -cu -dlk my_department -dp "$DEPARTMENT_PASSWORD" -u "my_department_cron" -p "$CRON_PASSWORD" -pp "INVENTORY_MASTER_ALL_DEPARTMENTS,STAFF_MASTER_ALL_DEPARTMENTS,COURSE_MASTER_ALL_DEPARTMENTS,TRIAL_MASTER_ALL_DEPARTMENTS,PROBAND_MASTER_ALL_DEPARTMENTS,USER_ALL_DEPARTMENTS,INPUT_FIELD_MASTER,MASS_MAIL_MASTER_ALL_DEPARTMENTS,INVENTORY_MASTER_SEARCH,STAFF_MASTER_SEARCH,COURSE_MASTER_SEARCH,TRIAL_MASTER_SEARCH,PROBAND_MASTER_SEARCH,USER_MASTER_SEARCH,INPUT_FIELD_MASTER_SEARCH,MASS_MAIL_MASTER_SEARCH"
37+
38+
# FIXME: set up bulk processor
39+
40+
# sed -r -i "s|ctsmsrestapi_password.*|ctsmsrestapi_password = ${CRON_PASSWORD}|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/Criteria/config.cfg
41+
# sed -r -i "s|ctsmsrestapi_password.*|ctsmsrestapi_password = ${CRON_PASSWORD}|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/Duplicates/config.cfg
42+
# sed -r -i "s|ctsmsrestapi_password.*|ctsmsrestapi_password = ${CRON_PASSWORD}|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/EcrfExporter/config.cfg
43+
# sed -r -i "s|ctsmsrestapi_password.*|ctsmsrestapi_password = ${CRON_PASSWORD}|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/InquiryExporter/config.cfg
44+
# IP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
45+
# sed -r -i "s|ctsms_base_uri.*|ctsms_base_uri: 'https://${IP}'|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/EcrfExporter/settings.yml
46+
# sed -r -i "s|ctsms_base_uri.*|ctsms_base_uri: 'https://${IP}'|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/InquiryExporter/settings.yml
47+
# sed -r -i "s|ctsms_base_uri.*|ctsms_base_uri: 'https://${IP}'|" /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/WebApps/Signup/settings.yml
48+
49+
# FIXME - cron container?
50+
51+
# ###setup cron
52+
# wget https://raw.githubusercontent.com/phoenixctms/install-debian/master/cron/ctsms -O /etc/cron.d/ctsms
53+
# chown root:root /etc/cron.d/ctsms
54+
# chmod 644 /etc/cron.d/ctsms
55+
# wget https://raw.githubusercontent.com/phoenixctms/install-debian/master/cron/my_department -O /etc/cron.d/my_department
56+
# chown root:root /etc/cron.d/my_department
57+
# chmod 644 /etc/cron.d/my_department
58+
# sed -r -i "s|-u cron -p 12345|-u my_department_cron -p ${CRON_PASSWORD}|" /etc/cron.d/my_department
59+
# systemctl restart cron
60+
61+
# ###create some default queries/reports
62+
# cd /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/ETL/Criteria
63+
# perl process.pl --task=create_criteria --force --skip-errors
64+
65+
# ###render workflow state diagram images from db and include them for tooltips
66+
# cd /ctsms/bulk_processor/CTSMS/BulkProcessor/Projects/Render
67+
# ./render.sh
68+
# cd /ctsms/build/ctsms
69+
# mvn -f web/pom.xml -Dmaven.test.skip=true
70+
# chmod 755 /ctsms/build/ctsms/web/target/ctsms-1.6.9.war
71+
# systemctl stop tomcat8
72+
# rm /var/lib/tomcat8/webapps/ROOT/ -rf
73+
# cp /ctsms/build/ctsms/web/target/ctsms-1.6.9.war /var/lib/tomcat8/webapps/ROOT.war
74+
75+
76+
echo "Initial database setup complete."
77+
echo
78+
echo "USER_PASSWORD: $USER_PASSWORD"
79+
echo "DEPARTMENT_PASSWORD: $DEPARTMENT_PASSWORD"
80+
echo "CRON_PASSWORD: $CRON_PASSWORD"

docker-compose.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: '3'
2+
3+
services:
4+
cache:
5+
image: memcached:1.6
6+
7+
db:
8+
image: postgres:12
9+
volumes:
10+
- postgres:/var/lib/postgresql/data
11+
ports:
12+
- 5432
13+
environment:
14+
- POSTGRES_USER=ctsms
15+
- POSTGRES_PASSWORD=ctsms
16+
17+
phoenix:
18+
build: phoenix
19+
ports:
20+
- "8888:8080"
21+
volumes:
22+
- ./dbsetup.sh:/dbsetup.sh
23+
links:
24+
- cache:cache
25+
- db:db
26+
27+
# bulk-processor:
28+
# build: bulk-processor
29+
# links:
30+
# - cache:cache
31+
# - db:db
32+
33+
volumes:
34+
postgres:

phoenix/Dockerfile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
FROM debian:stretch AS javabuild
2+
3+
RUN apt-get update && apt-get install -y \
4+
openjdk-8-jdk \
5+
git \
6+
maven \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
RUN mkdir -p /ctsms/build
10+
RUN cd /ctsms/build && \
11+
git clone https://github.com/phoenixctms/ctsms
12+
RUN cd /ctsms/build/ctsms && \
13+
mvn install -DskipTests && \
14+
mvn -f core/pom.xml org.andromda.maven.plugins:andromdapp-maven-plugin:schema -Dtasks=create && \
15+
mvn -f core/pom.xml org.andromda.maven.plugins:andromdapp-maven-plugin:schema -Dtasks=drop
16+
17+
RUN mkdir /ctsms/war/
18+
RUN cp /ctsms/build/ctsms/web/target/*.war /ctsms/war/
19+
RUN rm -rf /ctsms/build/
20+
21+
FROM tomcat:8 as runtime
22+
23+
RUN apt-get update && apt-get install -y pwgen \
24+
&& rm -rf /var/lib/apt/lists/*
25+
26+
COPY --from=javabuild /ctsms /ctsms
27+
COPY --from=javabuild /ctsms/war/ctsms-1.6.9.war /usr/local/tomcat/webapps/ROOT.war
28+
29+
# prepare /ctsms directory with default-config and master-data
30+
RUN wget -q https://raw.githubusercontent.com/phoenixctms/install-debian/master/dbtool.sh -O /ctsms/dbtool.sh
31+
RUN wget -q https://raw.githubusercontent.com/phoenixctms/install-debian/master/clearcache.sh -O /ctsms/clearcache.sh
32+
RUN wget -q --content-disposition https://github.com/phoenixctms/config-default/archive/master.tar.gz -O /ctsms/config.tar.gz \
33+
&& tar xzf /ctsms/config.tar.gz -C /ctsms --strip-components 1 \
34+
&& rm /ctsms/config.tar.gz
35+
RUN wget -q https://api.github.com/repos/phoenixctms/master-data/tarball/master -O /ctsms/master-data.tar.gz \
36+
&& mkdir /ctsms/master_data \
37+
&& tar xzf /ctsms/master-data.tar.gz -C /ctsms/master_data --strip-components 1 \
38+
&& rm /ctsms/master-data.tar.gz
39+
RUN chmod a+x /ctsms/dbtool.sh /ctsms/clearcache.sh
40+
41+
RUN wget -q https://raw.githubusercontent.com/phoenixctms/install-debian/master/tomcat/workers.properties -O "/usr/local/tomcat/conf/workers.properties"
42+
RUN chmod 640 "/usr/local/tomcat/conf/workers.properties"
43+
44+
ENV CTSMS_PROPERTIES /ctsms/properties
45+
ENV CTSMS_JAVA /ctsms/java
46+
ENV CATALINA_BASE /usr/local/tomcat
47+
48+
COPY docker-entrypoint.sh /
49+
RUN chmod +x /docker-entrypoint.sh
50+
ENTRYPOINT [ "/docker-entrypoint.sh" ]

phoenix/docker-entrypoint.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash -x
2+
3+
# set up a properties based on environment
4+
function set_properties {
5+
: "${DEFAULT_LOCALE:=en}"
6+
: "${DBSERVER:=db}"
7+
: "${DBPORT:=5432}"
8+
: "${DBUSER:=ctsms}"
9+
: "${DBNAME:=${DBUSER}}"
10+
: "${DBPASS:=${DBUSER}}"
11+
12+
for prop in /ctsms/properties/ctsms-applicationcontext.properties /ctsms/properties/ctsms-dbtool.properties; do
13+
echo "database_username=${DBUSER}" >> "$prop"
14+
echo "database_password=${DBPASS}" >> "$prop"
15+
echo "database_connection_url=jdbc:postgresql://${DBSERVER}/${DBNAME}" >> "$prop"
16+
echo "default_locale=${DEFAULT_LOCALE}" >> "$prop"
17+
done
18+
}
19+
20+
set_properties
21+
exec /usr/local/tomcat/bin/catalina.sh run

0 commit comments

Comments
 (0)