Browse Source

C++/cppcms docker port (#3470)

* C++/cppcms docker port
Nate 7 years ago
parent
commit
535d21fa24

+ 1 - 1
.travis.yml

@@ -17,7 +17,7 @@ env:
      - "TESTDIR=CSharp/nancy"
      - "TESTDIR=CSharp/nancy"
      - "TESTDIR=CSharp/revenj"
      - "TESTDIR=CSharp/revenj"
      - "TESTDIR=CSharp/servicestack"
      - "TESTDIR=CSharp/servicestack"
-    # - "TESTDIR=C++/cppcms"
+     - "TESTDIR=C++/cppcms"
     # - "TESTDIR=C++/ffead-cpp"
     # - "TESTDIR=C++/ffead-cpp"
      - "TESTDIR=C++/cpoll_cppsp"
      - "TESTDIR=C++/cpoll_cppsp"
      - "TESTDIR=C++/cutelyst"
      - "TESTDIR=C++/cutelyst"

+ 0 - 4
frameworks/C++/cppcms/.gitignore

@@ -1,4 +0,0 @@
-mycppcms
-config.js
-fortunes_view.cpp
-

+ 0 - 3
frameworks/C++/cppcms/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "cppcms",
   "framework": "cppcms",
   "tests": [{
   "tests": [{
     "default": {
     "default": {
-      "setup_file": "setup-nginx-mysql",
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/queries/",
       "query_url": "/queries/",
@@ -26,7 +25,6 @@
       "notes": ""
       "notes": ""
     },
     },
     "postgres": {
     "postgres": {
-      "setup_file": "setup-nginx-postgresql",
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/queries/",
       "query_url": "/queries/",
@@ -50,7 +48,6 @@
       "notes": ""
       "notes": ""
     },
     },
     "direct": {
     "direct": {
-      "setup_file": "setup-direct-mysql",
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/queries/",
       "query_url": "/queries/",

+ 20 - 0
frameworks/C++/cppcms/config-direct-mysql.json

@@ -0,0 +1,20 @@
+{
+    "service": {
+        "api": "http",
+        "ip": "0.0.0.0",
+        "port": 8080
+    },
+    "http": {
+        "script": "/"
+    },
+    "gzip": {
+        "enable": false
+    },
+    "app": {
+        "db_connection_string": "mysql:host=TFB-database;database=hello_world;user=benchmarkdbuser;password=benchmarkdbpass;set_charset_name=utf8;@pool_size=10"
+    },
+    "cache": {
+        "backend": "thread_shared",
+        "limit": 10000
+    }
+}

+ 19 - 0
frameworks/C++/cppcms/config-nginx-mysql.json

@@ -0,0 +1,19 @@
+{
+    "service": {
+        "api": "fastcgi",
+        "socket" : "/var/tmp/cppcms.sock"
+    },
+    "http": {
+        "script": "/"
+    },
+    "gzip": {
+        "enable": false
+    },
+    "app": {
+        "db_connection_string": "mysql:host=TFB-database;database=hello_world;user=benchmarkdbuser;password=benchmarkdbpass;set_charset_name=utf8;@pool_size=10"
+    },
+    "cache": {
+        "backend": "thread_shared",
+        "limit": 10000
+    }
+}

+ 3 - 3
frameworks/C++/cppcms/config.js.tpl → frameworks/C++/cppcms/config-nginx-postgresql.json

@@ -1,7 +1,7 @@
 {
 {
     "service": {
     "service": {
-        "api": "--api--",
-        --address--
+        "api": "fastcgi",
+        "socket" : "/var/tmp/cppcms.sock"
     },
     },
     "http": {
     "http": {
         "script": "/"
         "script": "/"
@@ -10,7 +10,7 @@
         "enable": false
         "enable": false
     },
     },
     "app": {
     "app": {
-        "db_connection_string": "--db--"
+        "db_connection_string": "postgresql:host=TFB-database;dbname=hello_world;user=benchmarkdbuser;password=benchmarkdbpass;@pool_size=10"
     },
     },
     "cache": {
     "cache": {
         "backend": "thread_shared",
         "backend": "thread_shared",

+ 46 - 0
frameworks/C++/cppcms/cppcms-base.dockerfile

@@ -0,0 +1,46 @@
+FROM tfb/nginx:latest
+
+RUN apt install -yqq libgcrypt11-dev cmake python
+
+WORKDIR /installs
+
+#http://cppcms.com/wikipp/en/page/cppcms_1x_build
+#note '-rc1' in the url
+ENV CPPCMS_VERSION=1.1.1
+ENV BACKNAME=cppcms
+ENV CPPCMS_HOME=/installs/$BACKNAME-$CPPCMS_VERSION
+ENV CPPCMSROOT=${CPPCMS_HOME}-install
+
+RUN wget -q https://download.sourceforge.net/project/cppcms/$BACKNAME/$CPPCMS_VERSION-rc1/$BACKNAME-$CPPCMS_VERSION.tar.bz2
+RUN tar xf $BACKNAME-$CPPCMS_VERSION.tar.bz2
+
+RUN cd $BACKNAME-$CPPCMS_VERSION && \
+    mkdir build && \
+    cd build && \
+    cmake -DCMAKE_INSTALL_PREFIX=${CPPCMSROOT} .. && \
+    make && make install
+
+ENV CPPCMS_HOME=${CPPCMSROOT}
+
+
+ENV CPPDB_VERSION=0.3.1
+ENV BACKNAME=cppdb
+ENV CPPDB_HOME=/installs/$BACKNAME-$CPPDB_VERSION
+ENV CPPDBROOT=${CPPDB_HOME}-install
+
+RUN wget -q https://download.sourceforge.net/project/cppcms/$BACKNAME/$CPPDB_VERSION/$BACKNAME-$CPPDB_VERSION.tar.bz2
+RUN tar xf $BACKNAME-$CPPDB_VERSION.tar.bz2
+
+RUN cd $BACKNAME-$CPPDB_VERSION && \
+    mkdir build && cd build && \
+    cmake -DCMAKE_INSTALL_PREFIX=${CPPDBROOT} .. && \
+    make && make install
+
+ENV CPPDB_HOME=${CPPDBROOT}
+
+ADD ./ /cppcms
+WORKDIR /cppcms
+
+ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CPPCMS_HOME}/lib:${CPPDB_HOME}/lib
+
+RUN make

+ 3 - 0
frameworks/C++/cppcms/cppcms-direct.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/cppcms-base:latest
+
+CMD ./mycppcms -c config-direct-mysql.json

+ 3 - 0
frameworks/C++/cppcms/cppcms-postgres.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/cppcms-base:latest
+
+CMD nginx -c /cppcms/nginx.conf && ./mycppcms -c config-nginx-postgresql.json

+ 3 - 0
frameworks/C++/cppcms/cppcms.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/cppcms-base:latest
+
+CMD nginx -c /cppcms/nginx.conf && ./mycppcms -c config-nginx-mysql.json

+ 1 - 0
frameworks/C++/cppcms/nginx.conf

@@ -1,5 +1,6 @@
 # This file is based on /usr/local/nginx/conf/nginx.conf.default.
 # This file is based on /usr/local/nginx/conf/nginx.conf.default.
 
 
+user root;
 worker_processes auto;
 worker_processes auto;
 error_log stderr error;
 error_log stderr error;
 
 

+ 0 - 6
frameworks/C++/cppcms/setup-direct-mysql.sh

@@ -1,6 +0,0 @@
-#!/bin/bash
-
-DRIVER=mysql
-NGINX=
-
-source ${TROOT}/setup.sh

+ 0 - 6
frameworks/C++/cppcms/setup-nginx-mysql.sh

@@ -1,6 +0,0 @@
-#!/bin/bash
-
-DRIVER=mysql
-NGINX=1
-
-source ${TROOT}/setup.sh

+ 0 - 6
frameworks/C++/cppcms/setup-nginx-postgresql.sh

@@ -1,6 +0,0 @@
-#!/bin/bash
-
-DRIVER=postgresql
-NGINX=1
-
-source ${TROOT}/setup.sh

+ 0 - 42
frameworks/C++/cppcms/setup.sh

@@ -1,42 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql postgresql
-
-cp config.js.tpl config.js
-
-fw_depends cppcms cppcms-cppdb
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CPPCMS_HOME}/lib:${CPPDB_HOME}/lib
-
-make
-
-
-#Database
-#http://cppcms.com/sql/cppdb/connstr.html
-#http://cppcms.com/sql/cppdb/backendref.html
-if [ "${DRIVER}" == "mysql" ]; then
-    dbstring="mysql:host="$DBHOST";database=hello_world;user=benchmarkdbuser;password=benchmarkdbpass;set_charset_name=utf8;@pool_size=10"
-else
-    dbstring="postgresql:host="$DBHOST";dbname=hello_world;user=benchmarkdbuser;password=benchmarkdbpass;@pool_size=10"
-fi
-sed -i 's|\(.*\)--db--\(.*\)|\1'"$dbstring"'\2|g' config.js
-
-
-#http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config#Nginx
-#configure Nginx
-if [ -n "${NGINX}" ]; then
-    fw_depends nginx
-    nginx -c ${TROOT}/nginx.conf
-
-    sed -i 's|\(.*\)--api--\(.*\)|\1'"fastcgi"'\2|g' config.js
-    sed -i 's|\(.*\)--address--\(.*\)|\1"socket" : "/var/tmp/cppcms.sock"\2|g' config.js
-    #for ip based connection
-    #sed -i 's|\(.*\)--address--\(.*\)|\1"ip": "127.0.0.1" , "port" : 8081\2|g' config.js
-else
-    sed -i 's|\(.*\)--api--\(.*\)|\1'"http"'\2|g' config.js
-    sed -i 's|\(.*\)--address--\(.*\)|\1"ip": "0.0.0.0", "port": 8080\2|g' config.js
-fi
-
-
-
-./mycppcms -c config.js
-

+ 0 - 31
toolset/setup/linux/frameworks/cppcms-cppdb.sh

@@ -1,31 +0,0 @@
-#!/bin/bash
-
-fw_installed cppcms-cppdb && return 0
-fw_depends cppcms
-#libmysqld-dev
-fw_depends cmake libpq-dev
-
-#http://cppcms.com/sql/cppdb/build.html
-
-VERSION=0.3.1
-BACKNAME=cppdb
-CPPDB_HOME=$IROOT/$BACKNAME-$VERSION
-CPPDBROOT=${CPPDB_HOME}-install
-
-fw_get -o $BACKNAME-$VERSION.tar.bz2 https://download.sourceforge.net/project/cppcms/$BACKNAME/$VERSION/$BACKNAME-$VERSION.tar.bz2
-fw_untar $BACKNAME-$VERSION.tar.bz2
-
-cd $BACKNAME-$VERSION
-rm -rf build
-mkdir build
-cd build
-cmake -DCMAKE_INSTALL_PREFIX=${CPPDBROOT} ..
-
-make
-#make test
-make install
-#make clean
-
-
-echo "export CPPDB_HOME=${CPPDBROOT}" > $IROOT/cppcms-cppdb.installed
-source $IROOT/cppcms-cppdb.installed

+ 0 - 30
toolset/setup/linux/frameworks/cppcms.sh

@@ -1,30 +0,0 @@
-#!/bin/bash
-
-fw_installed cppcms && return 0
-fw_depends cmake libpcre3-dev zlib1g-dev libgcrypt11-dev libicu-dev
-
-#http://cppcms.com/wikipp/en/page/cppcms_1x_build
-
-#note '-rc1' in the url
-VERSION=1.1.1
-BACKNAME=cppcms
-CPPCMS_HOME=$IROOT/$BACKNAME-$VERSION
-CPPCMSROOT=${CPPCMS_HOME}-install
-
-
-fw_get -o $BACKNAME-$VERSION.tar.bz2 https://download.sourceforge.net/project/cppcms/$BACKNAME/$VERSION-rc1/$BACKNAME-$VERSION.tar.bz2
-fw_untar $BACKNAME-$VERSION.tar.bz2
-
-cd $BACKNAME-$VERSION
-rm -rf build
-mkdir build
-cd build
-cmake -DCMAKE_INSTALL_PREFIX=${CPPCMSROOT} ..
-
-make
-#make test
-make install
-#make clean
-
-echo "export CPPCMS_HOME=${CPPCMSROOT}" > $IROOT/cppcms.installed
-source $IROOT/cppcms.installed