Docker Containers - Terminology Server with SNOMEDCT
This page describes the steps to launch WCI Terminology Server with mini version of SNOMEDCT 2014. The steps assume a user is running this locally on their computer.
Getting the Docker Images
> docker pull nmarques/wci_termserver:1.5.1
This may take a few minutes as there are several images to download.
Starting the Docker Container
Input
> docker run -p 8080:8080 nmarques/wci_termserver:1.5.1
Output if not running in background (-d)
Launch mysqld
Starting MariaDB database server: mysqld ..
Create database and user
Load the data into the database
Launch the server
..... more not shown
Open browser to http://localhost:8080/index.html.
Stopping the Docker Container
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5c6a8320327 nmarques/wci_termserver:1.5.1 "/bin/sh -c /root/ru…" 3 minutes ago Up 3 minutes 0.0.0.0:8081->8080/tcp brave_easley
> docker stop a5c6a8320327
The container Id unique each time a the Docker Container is started.
The Dockerfile
FROM openjdk:8-jdk
WORKDIR /root
# Run the latest MySQL/MariaDB
RUN apt-get update && apt-get install -y lsb-release maven git
RUN apt-get -y install mysql-server
# download tomcat webrunner
RUN curl -o webapp-runner.jar http://repo1.maven.org/maven2/com/github/jsimone/webapp-runner/8.5.29.0/webapp-runner-8.5.29.0.jar
# Pull and build the code
RUN git clone https://github.com/WestCoastInformatics/UMLS-Terminology-Server.git
RUN cd UMLS-Terminology-Server && git checkout develop && mvn clean install && cd -
# Load the data and indexes (alternatively, these could pull from a public S3 bucket)
COPY data/tsdb.sql /root/tsdb.sql
RUN mkdir /root/indexes
COPY data/tsdb-indexes.zip /root/indexes/tsdb-indexes.zip
RUN cd /root/indexes && unzip tsdb-indexes.zip && rm tsdb-indexes.zip && cd -
COPY data/config/* /root/config/
# copy other resources
COPY create.sql /root/create.sql
COPY config.properties /root/config.properties
COPY run.sh /root/run.sh
RUN chmod 755 /root/run.sh
# Run the command when deployed
CMD /root/run.sh
All Docker container definitions begin with an existing definition. In this case, with openjdk:8-jdk.
Lines 6-9:
Install Apache Maven, MySQL, Tomcat webrunner,
Lines 11&12:
Pull code from GitHub and use Maven to build.
Lines 16-20:
File tsdb.sql is a dump file from a MySQL database used here to populate the database. Unzip Lucene index files and copy configuration files acronyms.txt, spelling.txtj and spelling indexes.
Lines 23-26:
Copy file create.sql creates the tsdb database adds a user and grants the user permissions to query the database. Copy file config.properties used by the application. Copy run.sh which starts mysqld, runs mysql command to create the database, runs mysql command to load the data from tsdb.sql and then lauches webapp-runner.jar.
Additional sources for Docker documentation.
Docker glossary: https://docs.docker.com/glossary/
Docker for Windows: https://docs.docker.com/docker-for-windows/install/
Docker for Mac: https://docs.docker.com/docker-for-mac/install/
Docker for Linux: https://docs.docker.com/install/linux/docker-ce/ubuntu/
Know issues:
After clicking Launch Browser you will get an error. This will not impact your search. Click in the 'X' in in the red rectangle box and the error message will disappear for this session. This will be fixed in the future.
Clicking on the API link in the header will show a message “Can't read from server. It may not have the appropriate access-control-origin settings.” Please use https://snomed.terminology.tools/swagger.html to view the API or https://snomed.terminology.tools:443/swagger.json to import the API into Postman.