cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Stay updated on what is happening on the PTC Community by subscribing to PTC Community Announcements. X

Running ThingWorx in Docker

jgabriel
13-Aquamarine

Running ThingWorx in Docker

Does anybody here run ThingWorx 7.2 (preferably on Ubuntu) in docker? If so, can you please share your docker file for bulding such a machine?

I beileve it would be huge help for whole Developer Community​.

Thanks in advance.

ACCEPTED SOLUTION

Accepted Solutions
12 REPLIES 12

You can ask Marco Bratz from doubleslash. As far as I know they frequently use Docker. You can find him on xing.com

PaiChung
22-Sapphire I
(To:jgabriel)

The short answer I believe is yes .. .the long answer .... I'm seeing if someone in Dev wants to contribute to this, since I know we use Docker in Dev.

jgabriel
13-Aquamarine
(To:PaiChung)

Thanks for reply let me know, if something comes up. (please see my addition below).

jgabriel
13-Aquamarine
(To:jgabriel)

On second thought, for minimal image and overhead would be best to hook it up together from these two images based on alpine linux:

But still lacking experience though. =)

jgabriel
13-Aquamarine
(To:jgabriel)

It is far from perfect and minimal, but it works, Posting it here, so anybody can learn from it and possibly improve it.


It should work, if you copy TW installation files into tw directory and run docker-compose up in root folder. After some initial setup, you should be able to see TW instance on your localhost/thingworx port 80.


File here: ThingWorx setup for docker.



Do1
10-Marble
10-Marble
(To:jgabriel)

Thanks Jan,

This is very interesting, would you be so kind as to share your learning and the process you followed as well as the prerequisites?

Thank you,

Duan

jgabriel
13-Aquamarine
(To:Do1)

It was very chaotic, but generally you need to master docker commands and shell scripting. I have mostly read official docs and I highly recommend base image with pre installed apache or postgres. It it best to pick operating system you understand at least little bit (generally RedHat or Debian). For me it was debian.

So I have installed docker toolbox with kitematic and started playing around, eventually I was able to set up both systems manually. I used official images of apache and postgres both based on debian. Then I got to reading: Build your own images - Docker and got myself images with some level of automation. After that I started composing looking at Quickstart: Compose and WordPress - Docker. Finally I end up with this result...

There are definitely more articles and blog post I have read and dont remember, hope it helps!

jamesso
12-Amethyst
(To:jgabriel)

The attachment is missing. Can someone who downloaded it re-post it?

jgabriel
13-Aquamarine
(To:jamesso)
jamesso
12-Amethyst
(To:jgabriel)

Thanks for the working reference.

As I thought, you were working with a Postgres backed version of Thingworx and as an academic user, I don't have access to this version.

But as I wrote in another discussion, I did learn to build a simple working docker-compose file for the developer edition that is backed by the H2 database.

jgabriel
13-Aquamarine
(To:jamesso)

Feel free to make pull request with H2 version, I can set it up as different branch. =)

Just wanted to share my how to to build up a TW instance using docker.

Build an ubuntu server VM NIC bridged
Login

sudo apt-get update

Install OpenSSH server

sudo tasksel

Back up sshconfig
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_backup

Edit the config file to allow port 22
sudo nano /etc/ssh/ssh_config

uncomment Port 22

restart ssh
sudo service ssh restart

Get server IP

ifconfig

Log in from putty

Install docker
wget -qO- http://get.docker.com | sh

Add your user to docker group
sudo usermod -aG docker (username)

exit

Log back in with putty.


Configure your docker directory


mkdir (docker working dir)

cd /(docker working dir)

mkdir build

Add your war file and tomcat-users.xml to the build directory. "filezilla"

nano Dockerfile

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

FROM java:8-jre

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME" \
&& mkdir -p "/ThingworxStorage" \
&& mkdir -p "/ThingworxBackupStorage"

# && chown tomcat8:tomcat8 /ThingworxStorage /ThingworxBackupStorage \
# && chown 755 /ThingworxStorage /ThingworxBackupStorage

WORKDIR $CATALINA_HOME

# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys \
05AB33110949707C93A279E3D3EFE6B686867BA6 \
07E48665A34DCAFAE522E5E6266191C37C037D42 \
47309207D818FFD8DCD3F83F1931D684307A10A5 \
541FBE7D8F78B25E055DDEE13C370389288584E7 \
61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
713DA88BE50911535FE716F5208B0AB1D63011C7 \
79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
9BA44C2621385CB966EBA586F72C284D731FABEE \
A27677289986DB50844682F8ACB77FC2E86E29AC \
A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.37
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

RUN curl -SL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
&& curl -SL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
&& gpg --verify tomcat.tar.gz.asc \
&& tar -xvf tomcat.tar.gz --strip-components=1 \
&& rm bin/*.bat \
&& rm tomcat.tar.gz*

ENV JAVA_OPTS -Dserver -Dd64 -Xms1024m -Xmx5g -XX:+UseNUMA -XX:+UseConcMarkSweepGC
ENV CATALINA_OPTS -Djava.net.preferIPv4Stack=true

COPY build/tomcat-users.xml $CATALINA_HOME/conf/
COPY build/Thingworx.war $CATALINA_HOME/webapps/

EXPOSE 8080
CMD ["catalina.sh", "run"]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Build docker

docker build -t thingworx .

Run, instance.
docker run -d -p 8080:8080 thingworx

Test connect to http://IP:8080/Thingworx

default account is Administrator/admin

You should use Docker shared volumes to get the TW storage directories (/ThingworxStorage and ThingworxBackupStorage) outside of the container. Example : docker run -d -p 8080:8080 -v $HOME/TW/ThingworxStorage:/ThingworxStorage -v $HOME/TW/ThingworxBackupStorage:/ThingworxBackupStorage thingworx

Announcements


Top Tags