rabin 5 年之前
父節點
當前提交
fff9189387

+ 28 - 0
src/docker/build/iot/eros/Dockerfile

@@ -0,0 +1,28 @@
+FROM docker.dever.cc/dev/python/v3:latest
+
+MAINTAINER Rabin "https://github.com/shemic"
+
+ENV IOT_NAME=eros
+ENV IOT_HOME=/usr/local/$IOT_NAME
+ENV IOT_CONF=env
+ENV PATH=$PATH:$IOT_HOME
+
+RUN apk add --no-cache --update py-psycopg2 git gcc g++ && \
+	pip3 install --upgrade pip && \
+	pip3 install tornado && \
+	pip3 install pytest-runner && \
+	pip3 install paho-mqtt && \
+	pip3 install modbus-tk && \
+	pip3 install influxdb && \
+	pip3 install short_url && \
+	pip3 install oss2 && \
+	#pip3 install qrcode && \
+	pip3 install -U git+http://git.dever.cc:3000/python/demeter.git && \
+	git clone http://git.dever.cc:3000/xinnongbaohe/$IOT_NAME.git $IOT_HOME && \
+	rm -R $IOT_HOME/runtime/postgresql && \
+	chmod -R +x $IOT_HOME/*.py && \
+	apk del gcc g++
+
+EXPOSE 8090 8091
+
+COPY iot.sh /entrypoint/iot.sh

+ 57 - 0
src/docker/build/iot/eros/iot.sh

@@ -0,0 +1,57 @@
+#!/usr/bin/env sh
+set -e
+start_iot()
+{
+    cd $IOT_HOME
+    git reset --hard FETCH_HEAD
+    git pull
+    install.py
+    process_start admin.py
+    process_start front.py
+    process_start modbus.py -m tcp_start
+    process_start modbus.py -m rtu_start
+    process_start cron.py -m control
+    process_start cron.py -m device
+    process_start cron.py -m loop
+    process_start cron.py -m queue
+    process_start cron.py -m queuedrop
+    process_start cron.py -m savepic
+    process_start cron.py -m timesync
+    process_start cron.py -m timing
+    process_start cron.py -m mqtt_sub
+    #process_start cron.py -m mqtt_pub
+}
+
+stop_iot()
+{
+	process_stop admin.py
+    process_stop front.py
+    process_stop modbus.py -m tcp_start
+    process_stop modbus.py -m rtu_start
+    process_stop cron.py -m control
+    process_stop cron.py -m device
+    process_stop cron.py -m loop
+    process_stop cron.py -m queue
+    process_stop cron.py -m queuedrop
+    process_stop cron.py -m savepic
+    process_stop cron.py -m timesync
+    process_stop cron.py -m timing
+    process_stop cron.py -m mqtt_sub
+}
+
+monit_iot()
+{
+    process_monit admin.py
+    process_monit front.py
+    process_monit modbus.py -m tcp_start
+    process_monit modbus.py -m rtu_start
+    process_monit cron.py -m control
+    process_monit cron.py -m device
+    process_monit cron.py -m loop
+    process_monit cron.py -m queue
+    process_monit cron.py -m queuedrop
+    process_monit cron.py -m savepic
+    process_monit cron.py -m timesync
+    process_monit cron.py -m timing
+    process_monit cron.py -m mqtt_sub
+}

+ 18 - 0
src/docker/build/iot/ngrok/Dockerfile

@@ -0,0 +1,18 @@
+FROM golang:1.7.1-alpine
+
+MAINTAINER Rabin "https://github.com/shemic"
+
+ENV NG_DOMAIN="ngrok.dever.cc"
+ENV NG_NAME=ngrok
+ENV NG_HOME=/usr/local/$NG_NAME
+ENV PATH=$PATH:$NG_HOME
+
+RUN apk add --no-cache git make openssl  && \
+	git clone https://github.com/inconshreveable/ngrok.git --depth=1 $NG_HOME
+
+ADD build.sh /
+#RUN sh /build.sh
+
+EXPOSE 8081
+
+COPY ngrok.sh /entrypoint/ngrok.sh

+ 20 - 0
src/docker/build/iot/ngrok/build.sh

@@ -0,0 +1,20 @@
+#!/usr/bin/env sh
+
+cd $NG_HOME
+openssl genrsa -out rootCA.key 2048
+openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
+openssl genrsa -out device.key 2048
+openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
+openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
+cp rootCA.pem assets/client/tls/ngrokroot.crt
+cp device.crt assets/server/tls/snakeoil.crt
+cp device.key assets/server/tls/snakeoil.key
+
+make release-server
+GOOS=linux GOARCH=386 make release-client
+GOOS=linux GOARCH=amd64 make release-client
+GOOS=windows GOARCH=386 make release-client
+GOOS=windows GOARCH=amd64 make release-client
+GOOS=darwin GOARCH=386 make release-client
+GOOS=darwin GOARCH=amd64 make release-client
+GOOS=linux GOARCH=arm make release-client

+ 38 - 0
src/docker/build/iot/ngrok/ngrok.sh

@@ -0,0 +1,38 @@
+#!/usr/bin/env sh
+set -e
+start_ngrok()
+{
+    process_start ngrokd
+}
+
+stop_iot()
+{
+	process_stop ngrokd
+}
+
+monit_iot()
+{
+    process_monit ngrokd
+}
+
+setup()
+{
+    cd $NG_NAME
+    openssl genrsa -out rootCA.key 2048
+    openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
+    openssl genrsa -out device.key 2048
+    openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
+    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
+    cp rootCA.pem assets/client/tls/ngrokroot.crt
+    cp device.crt assets/server/tls/snakeoil.crt
+    cp device.key assets/server/tls/snakeoil.key
+
+    make release-server
+    GOOS=linux GOARCH=386 make release-client
+    GOOS=linux GOARCH=amd64 make release-client
+    GOOS=windows GOARCH=386 make release-client
+    GOOS=windows GOARCH=amd64 make release-client
+    GOOS=darwin GOARCH=386 make release-client
+    GOOS=darwin GOARCH=amd64 make release-client
+    GOOS=linux GOARCH=arm make release-client
+}

+ 28 - 0
src/docker/build/iot/zeus/Dockerfile

@@ -0,0 +1,28 @@
+FROM docker.dever.cc/dev/python/v3:latest
+
+MAINTAINER Rabin "https://github.com/shemic"
+
+ENV IOT_NAME=eros
+ENV IOT_HOME=/usr/local/$IOT_NAME
+ENV IOT_CONF=env
+ENV PATH=$PATH:$IOT_HOME
+
+RUN apk add --no-cache --update py-psycopg2 git gcc g++ && \
+	pip3 install --upgrade pip && \
+	pip3 install tornado && \
+	pip3 install pytest-runner && \
+	pip3 install paho-mqtt && \
+	pip3 install modbus-tk && \
+	pip3 install influxdb && \
+	pip3 install short_url && \
+	pip3 install oss2 && \
+	#pip3 install qrcode && \
+	pip3 install -U git+http://git.dever.cc:3000/python/demeter.git && \
+	git clone http://git.dever.cc:3000/xinnongbaohe/$IOT_NAME.git $IOT_HOME && \
+	rm -R $IOT_HOME/runtime/postgresql && \
+	chmod -R +x $IOT_HOME/*.py && \
+	apk del gcc g++
+
+EXPOSE 8090 8091
+
+COPY iot.sh /entrypoint/iot.sh

+ 57 - 0
src/docker/build/iot/zeus/iot.sh

@@ -0,0 +1,57 @@
+#!/usr/bin/env sh
+set -e
+start_iot()
+{
+    cd $IOT_HOME
+    git reset --hard FETCH_HEAD
+    git pull
+    install.py
+    process_start admin.py
+    process_start front.py
+    process_start modbus.py -m tcp_start
+    process_start modbus.py -m rtu_start
+    process_start cron.py -m control
+    process_start cron.py -m device
+    process_start cron.py -m loop
+    process_start cron.py -m queue
+    process_start cron.py -m queuedrop
+    process_start cron.py -m savepic
+    process_start cron.py -m timesync
+    process_start cron.py -m timing
+    process_start cron.py -m mqtt_sub
+    #process_start cron.py -m mqtt_pub
+}
+
+stop_iot()
+{
+	process_stop admin.py
+    process_stop front.py
+    process_stop modbus.py -m tcp_start
+    process_stop modbus.py -m rtu_start
+    process_stop cron.py -m control
+    process_stop cron.py -m device
+    process_stop cron.py -m loop
+    process_stop cron.py -m queue
+    process_stop cron.py -m queuedrop
+    process_stop cron.py -m savepic
+    process_stop cron.py -m timesync
+    process_stop cron.py -m timing
+    process_stop cron.py -m mqtt_sub
+}
+
+monit_iot()
+{
+    process_monit admin.py
+    process_monit front.py
+    process_monit modbus.py -m tcp_start
+    process_monit modbus.py -m rtu_start
+    process_monit cron.py -m control
+    process_monit cron.py -m device
+    process_monit cron.py -m loop
+    process_monit cron.py -m queue
+    process_monit cron.py -m queuedrop
+    process_monit cron.py -m savepic
+    process_monit cron.py -m timesync
+    process_monit cron.py -m timing
+    process_monit cron.py -m mqtt_sub
+}

+ 1 - 1
src/docker/build/os/alpine/v3.4/process.sh

@@ -2,7 +2,7 @@
 set -e
 process_status()
 {
-    pids=`ps aux|grep $1|grep -v entrypoint|grep -v grep|awk '{print $1}'`
+    pids=`ps aux|grep '$1'|grep -v entrypoint|grep -v grep|awk '{print $1}'`
     if [ "$pids" ]; then
         echo $pids
     else

+ 5 - 1
src/docker/conf/iot.conf

@@ -35,4 +35,8 @@ volumes = {container}src/python:/root/input,{container}web/apidoc:/root/output,{
 call = apidoc
 #使用dm call iot-apidoc input=demo&out=output来运行,然后可以在宿主机里使用apidoc命令
 param = -i /root/input/{$input:nongxiaohe}/front/api -o /root/{$out:output} -c /root/config
-alias = apidoc
+alias = apidoc
+
+[ngrok]
+port = 8081:8081
+command = sh

+ 3 - 0
src/docker/core.conf

@@ -39,6 +39,9 @@ openresty			= web/openresty
 emqtt				= iot/emqtt
 xinnongbaohe		= iot/xinnongbaohe
 nongxiaohe			= iot/nongxiaohe
+eros				= iot/eros
+zeus				= iot/zeus
+ngrok				= iot/ngrok
 
 ;mq
 rabbitmq			= mq/rabbitmq