From 3994d3032a18415558dff4caf58ecf4cbc06df3d Mon Sep 17 00:00:00 2001
From: yii <yii@yiideMacBook-Pro.local>
Date: Wed, 17 Mar 2021 15:36:35 +0800
Subject: [PATCH] docker support

---
 .DS_Store                   | Bin 0 -> 6148 bytes
 README.md                   |  36 +++++++++++++++++++++++++++++++++++
 docker/Dockerfile           |   6 ++++++
 docker/docker_entrypoint.sh |  37 ++++++++++++++++++++++++++++++++++++
 4 files changed, 79 insertions(+)
 create mode 100644 .DS_Store
 create mode 100644 docker/Dockerfile
 create mode 100755 docker/docker_entrypoint.sh

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..29c4b2ddb313475216ae7d945377f610f1bd806e
GIT binary patch
literal 6148
zcmeHK!EVz)5S>jz;usJ)AkhnwFWjmqDHVbPQko`*NPrMVZ~)ZCaUfP*yNaDgC8Wxo
zFMtETz<2Nkd<!Rdv%3Y`DVH7)s&=H=x88Z<^**n6y+kCsGrvvLAR-ISSg}!@V;pB+
zvyyJP1{CrhJ~b(!$smkJYi!eC6fg?>Zwm0YYmrAY3Miz^_v?kRhZrvmJMiXDX{ZrZ
z!Ha1`2Q;QBf9q#l#rabfx!ycE(%f&}Q5Ym?tMy%!%9ShCnq}FRecgWJPU5+n4%1oE
z9Zp~I)ze`*@pS!p9EZQ_L+?c}p6@ko?#59%45IN=CI|i)l-DnV$dBjUcozAIypO8_
zmQ}avdyS37qTSxwbhfweFE^dVgRK_ockeBib?erh_QS#c;mP~Ohvn%fIb;%8;H2Hq
zcm|(Q$qDk-PevXdlM`}*V|N;bar6%D9IMeI8qhBF=?S^i&+3TiS9n(QIz0n(hkEoF
z*rY@9^BLlHA;ZpPoSv5>d-;-ivo==m5l!)4#}x5Oj`y4v`uSMsrwShC0UZ}-1BUsd
zz^#FM0#CtR8$pSc$&R^9bMU-;|8h2FpBYKUE~J2-($>`rWt$|UfKlKwE5Pf6183}L
zTq%@G2MT!v09Mc}4R!uy;2cL|N8?H%A~2y+fhtw#BZg4vXm>QPqj9BBrIXNy521S&
z`h+56@3_As=_EP|O=%P`3gi_itIG!O|NXz8|MN-a$|ztIxKs*=O3&?eF(kdWt__a&
uS_i%lXJg(<p-e%cw_{o1t#|`24Kar+z>db1LbSllkARfH6h?u6s=zO}jMAh4

literal 0
HcmV?d00001

diff --git a/README.md b/README.md
index 277feca..8a668a6 100644
--- a/README.md
+++ b/README.md
@@ -92,6 +92,42 @@ systemd 脚本放入:
 * 停止: `systemctl stop anylink`
 * 开机自启: `systemctl enable anylink`
 
+## Docker
+
+1. 构建镜像
+
+   ```bash
+   #获取仓库源码
+   git clone -b dev https://github.com/bjdgyc/anylink.git
+   # 构建镜像
+   cd docker
+   docker build -t anylink .
+   ```
+
+2. 生成密码
+
+   ```bash
+   docker run -it --privileged -e mode=password -e password=< your password > --rm anylink
+   ```
+
+3. 生成jwt token
+
+   ```bash
+   docker run -it --privileged -e mode=jwt --rm anylink
+   ```
+
+4. 启动容器
+
+   ```bash
+   docker run -it --privileged \
+   -e mode=pro \
+   -e iproute=192.168.10.0/255.255.255.0 \
+   -v <your conf path>:/anylink/conf \
+   -v <your log path>:/anylink/log \
+   --restart=always
+   anylink
+   ```
+
 
 
 ## Setting
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..b240e3c
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,6 @@
+FROM ubuntu:18.04
+WORKDIR /
+COPY docker_entrypoint.sh docker_entrypoint.sh
+RUN mkdir /anylink && apt update && apt install -y wget iptables tar iproute2
+ENTRYPOINT ["/docker_entrypoint.sh"]
+#CMD ["/anylink/anylink","-conf=/anylink/conf/server.toml"]
diff --git a/docker/docker_entrypoint.sh b/docker/docker_entrypoint.sh
new file mode 100755
index 0000000..fff9331
--- /dev/null
+++ b/docker/docker_entrypoint.sh
@@ -0,0 +1,37 @@
+#! /bin/bash
+version=(`wget -qO- -t1 -T2 "https://api.github.com/repos/bjdgyc/anylink/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g'`)
+count=(`ls anylink | wc -w `)
+wget https://github.com/bjdgyc/anylink/releases/download/${version}/anylink-deploy.tar.gz
+tar xf anylink-deploy.tar.gz
+rm -rf anylink-deploy.tar.gz
+if [ ${count} -eq 0 ]; then
+	echo "init anylink"
+	mv anylink-deploy/* anylink/
+else
+	if [ ! -d "/anylink/log" ]; then
+		mv anylink-deploy/log anylink/
+	fi
+	if [ ! -d "/anylink/conf" ]; then
+                mv anylink-deploy/conf anylink/
+        fi
+	echo "update anylink"
+	rm -rf anylink/ui anylink/anylink anylink/files
+	mv anylink-deploy/ui anylink/
+	mv anylink-deploy/anylink anylink/
+	mv anylink-deploy/files anylink/
+fi
+rm -rf anylink-deploy
+sysctl -w net.ipv4.ip_forward=1
+if [[ ${mode} == pro ]];then
+	iptables -t nat -A POSTROUTING -s ${iproute} -o eth0 -j MASQUERADE
+	iptables -L -n -t nat
+	/anylink/anylink -conf=/anylink/conf/server.toml
+elif [[ ${mode} == password ]];then
+	if [ -z ${password} ];then
+		echo "invalid password"
+	else
+		/anylink/anylink -passwd ${password}
+	fi
+elif [[ ${mode} -eq jwt ]];then
+	/anylink/anylink -secret
+fi