dever 5 年之前
父節點
當前提交
df53c4d78d
共有 4 個文件被更改,包括 85 次插入43 次删除
  1. 12 2
      src/docker/build/iot/eros/Dockerfile
  2. 20 0
      src/docker/build/iot/eros/build.sh
  3. 41 39
      src/docker/build/iot/eros/iot.sh
  4. 12 2
      src/docker/conf/iot.conf

+ 12 - 2
src/docker/build/iot/eros/Dockerfile

@@ -2,12 +2,18 @@ FROM docker.dever.cc/dev/python/v3:latest
 
 MAINTAINER Rabin "https://github.com/shemic"
 
+ENV IOT_FARM=1
 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++ && \
+ENV NG_DOMAIN="ngrok.dever.cc"
+ENV NG_NAME=ngrok
+ENV NG_HOME=/usr/local/$NG_NAME
+ENV PATH=$PATH:$NG_HOME/bin
+
+RUN apk add --no-cache --update py-psycopg2 git gcc g++ go git make openssl && \
 	pip3 install --upgrade pip && \
 	pip3 install tornado && \
 	pip3 install pytest-runner && \
@@ -21,7 +27,11 @@ RUN apk add --no-cache --update py-psycopg2 git gcc g++ && \
 	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++
+	git clone https://github.com/inconshreveable/ngrok.git --depth=1 $NG_HOME && \
+	apk del gcc g++ git make
+
+ADD build.sh /
+RUN sh /build.sh
 
 EXPOSE 8090 8091
 

+ 20 - 0
src/docker/build/iot/eros/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=$NG_DOMAIN" -days 5000 -out rootCA.pem
+openssl genrsa -out device.key 2048
+openssl req -new -key device.key -subj "/CN=$NG_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

+ 41 - 39
src/docker/build/iot/eros/iot.sh

@@ -6,52 +6,54 @@ start_iot()
     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 {$IOT_HOME}/admin.py
+    process_start {$IOT_HOME}/front.py
+    process_start {$IOT_HOME}/modbus.py -m tcp_start
+    process_start {$IOT_HOME}/modbus.py -m rtu_start
+    process_start {$IOT_HOME}/cron.py -m control
+    process_start {$IOT_HOME}/cron.py -m device
+    process_start {$IOT_HOME}/cron.py -m loop
+    process_start {$IOT_HOME}/cron.py -m queue
+    process_start {$IOT_HOME}/cron.py -m queuedrop
+    process_start {$IOT_HOME}/cron.py -m savepic
+    process_start {$IOT_HOME}/cron.py -m timesync
+    process_start {$IOT_HOME}/cron.py -m timing
+    process_start {$IOT_HOME}/cron.py -m mqtt_sub
     #process_start cron.py -m mqtt_pub
+    process_start ngrok -subdomain="f{$IOT_FARM}" -config="{$IOT_HOME}/ngrok.cfg" 8091
 }
 
 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
+	process_stop {$IOT_HOME}/admin.py
+    process_stop {$IOT_HOME}/front.py
+    process_stop {$IOT_HOME}/modbus.py -m tcp_start
+    process_stop {$IOT_HOME}/modbus.py -m rtu_start
+    process_stop {$IOT_HOME}/cron.py -m control
+    process_stop {$IOT_HOME}/cron.py -m device
+    process_stop {$IOT_HOME}/cron.py -m loop
+    process_stop {$IOT_HOME}/cron.py -m queue
+    process_stop {$IOT_HOME}/cron.py -m queuedrop
+    process_stop {$IOT_HOME}/cron.py -m savepic
+    process_stop {$IOT_HOME}/cron.py -m timesync
+    process_stop {$IOT_HOME}/cron.py -m timing
+    process_stop {$IOT_HOME}/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
+    process_monit {$IOT_HOME}/admin.py
+    process_monit {$IOT_HOME}/front.py
+    process_monit {$IOT_HOME}/modbus.py -m tcp_start
+    process_monit {$IOT_HOME}/modbus.py -m rtu_start
+    process_monit {$IOT_HOME}/cron.py -m control
+    process_monit {$IOT_HOME}/cron.py -m device
+    process_monit {$IOT_HOME}/cron.py -m loop
+    process_monit {$IOT_HOME}/cron.py -m queue
+    process_monit {$IOT_HOME}/cron.py -m queuedrop
+    process_monit {$IOT_HOME}/cron.py -m savepic
+    process_monit {$IOT_HOME}/cron.py -m timesync
+    process_monit {$IOT_HOME}/cron.py -m timing
+    process_monit {$IOT_HOME}/cron.py -m mqtt_sub
+    process_monit ngrok -subdomain="f{$IOT_FARM}" -config="{$IOT_HOME}/ngrok.cfg" 8091
 }

+ 12 - 2
src/docker/conf/iot.conf

@@ -33,13 +33,23 @@ command = demeter
 [apidoc]
 volumes = {container}src/python:/root/input,{container}web/apidoc:/root/output,{container}src/python/nongxiaohe/doc:/root/config
 call = apidoc
-#使用dm call iot-apidoc input=demo&out=output来运行,然后可以在宿主机里使用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
 
+[zeus]
+port = 8087:8087,8088:8088,8089:8089
+command = iot
+
+[eros]
+#port = 8090:8090,8091:8091,8092:8092
+command = sh
+
 [ngrok]
 port = 8081:8081,4443:4443
 volumes = {container}src/python:/root/input,{container}web/apidoc:/root/output,{container}src/python/nongxiaohe/doc:/root/config
+#使用dm call iot-ngrok farm=f1来运行
 call = ngrok
-param = -subdomain="{$input:f1}" -config="ngrok.cfg" 8080
+#-config="ngrok.cfg" 
+param = -subdomain="{$farm:f1}" -hostname="ngrok.dever.cc" {$port:8091}
 command = ngrokd -domain="ngrok.dever.cc" -httpAddr=":8081" -tunnelAddr=":4443"