diff --git a/.env b/.env index 3c6fcac..7423149 100644 --- a/.env +++ b/.env @@ -1,14 +1,8 @@ #!/usr/bin/env sh # See https://docs.docker.com/compose/environment-variables/#the-env-file -# edge-admin -VERSION=1.3.3 - -# edge-node -VERSION=1.3.3 -ENDPOINTS=http://xxx.com:8001 -CLUSTERID=xxx -SECRET=xxx +# GoEdge +VERSION=latest # MySQL MYSQL_VERSION=8 diff --git a/README.md b/README.md index 673a94a..a327606 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,8 @@ services: - CLUSTERID=xxx - SECRET=xxx network_mode: host + cap_add: + - NET_ADMIN volumes: - ./data/edge-node/cache:/opt/cache - ./data/edge-node/configs:/usr/local/goedge/edge-node/configs diff --git a/docker-compose.yaml b/docker-compose.yaml index 3f0b1a8..880cf12 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,5 +1,3 @@ -version: "3" - networks: goedge: external: false @@ -12,6 +10,8 @@ services: - .env networks: - goedge + command: + - '--skip-log-bin' volumes: - ./data/db/mysql:/var/lib/mysql:rw restart: always @@ -22,26 +22,81 @@ services: ports: - 7788:7788/tcp - 8001:8001/tcp - env_file: - - .env networks: - goedge volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro - ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs - ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configs restart: always + depends_on: + - mysqld + + edge-user: + image: icodex/edge-user:${VERSION} + container_name: edge-user + environment: + - ENDPOINTS=http://xxx.com:8001 + - NODEID=xxx + - SECRET=xxx + ports: + - 8080:80/tcp + networks: + - goedge + cap_add: + - NET_ADMIN + volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro + - ./data/edge-user/configs:/usr/local/goedge/edge-user/configs + restart: always + depends_on: + - edge-admin + - mysqld edge-node: image: icodex/edge-node:${VERSION} container_name: edge-node + environment: + - ENDPOINTS=http://xxx.com:8001 + - CLUSTERID=xxx + - SECRET=xxx ports: - 80:80/tcp - 443:443/tcp - env_file: - - .env networks: - goedge + cap_add: + - NET_ADMIN volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro - ./data/edge-node/cache:/opt/cache - ./data/edge-node/configs:/usr/local/goedge/edge-node/configs restart: always + depends_on: + - edge-admin + - mysqld + + edge-dns: + image: icodex/edge-dns:${VERSION} + container_name: edge-dns + environment: + - ENDPOINTS=http://xxx.com:8001 + - NODEID=xxx + - SECRET=xxx + ports: + - 53:53/udp + networks: + - goedge + cap_add: + - NET_ADMIN + volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro + - ./data/edge-dns/configs:/usr/local/goedge/edge-dns/configs + restart: always + depends_on: + - edge-admin + - mysqld diff --git a/docker/Dockerfile.admin b/docker/Dockerfile similarity index 60% rename from docker/Dockerfile.admin rename to docker/Dockerfile index 30b27b2..bb1fef8 100644 --- a/docker/Dockerfile.admin +++ b/docker/Dockerfile @@ -1,7 +1,10 @@ FROM alpine:latest LABEL maintainer="icodex@msn.com" -ENV TZ "Asia/Shanghai" -ENV ROOT_DIR /usr/local/goedge +ENV TZ="Asia/Shanghai" +ENV ROOT_DIR=/usr/local/goedge + +ARG RUN_TYPE +ENV RUN_TYPE=${RUN_TYPE} ARG VERSION ENV VERSION=${VERSION} @@ -9,9 +12,7 @@ ENV VERSION=${VERSION} COPY build /build/ RUN /build/base.sh \ - && /build/install.sh admin - -EXPOSE 7788 8001 + && /build/install.sh ${RUN_TYPE} WORKDIR /usr/local/goedge ENTRYPOINT [ "/usr/local/goedge/run.sh" ] diff --git a/docker/Dockerfile.node b/docker/Dockerfile.node deleted file mode 100644 index 167d547..0000000 --- a/docker/Dockerfile.node +++ /dev/null @@ -1,17 +0,0 @@ -FROM alpine:latest -LABEL maintainer="icodex@msn.com" -ENV TZ "Asia/Shanghai" -ENV ROOT_DIR /usr/local/goedge - -ARG VERSION -ENV VERSION=${VERSION} - -COPY build /build/ - -RUN /build/base.sh \ - && /build/install.sh node - -EXPOSE 80 443 - -WORKDIR /usr/local/goedge -ENTRYPOINT [ "/usr/local/goedge/run.sh" ] diff --git a/docker/build.sh b/docker/build.sh index 888abd2..c39ebcd 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,13 +1,15 @@ #!/usr/bin/env bash case "$1" in - "admin"|"node") + "admin"|"node"|"user"|"dns") RUN_TYPE=$1 ;; *) echo "USAGE: $0 from to" echo " e.g.: $0 admin" echo " e.g.: $0 node" + echo " e.g.: $0 user" + echo " e.g.: $0 dns" exit ;; esac @@ -17,8 +19,8 @@ LATEST=$3 if [ $# -lt 2 ] ; then echo "USAGE: $0 from to" - echo " e.g.: $0 $1 1.3.3" - echo " e.g.: $0 $1 1.3.3 latest" + echo " e.g.: $0 $1 1.3.9" + echo " e.g.: $0 $1 1.3.9 latest" exit 1; fi @@ -31,4 +33,4 @@ fi docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder docker buildx inspect --bootstrap -docker buildx build -f Dockerfile.${RUN_TYPE} -t icodex/edge-${RUN_TYPE}:${IMG_VERSION} --build-arg VERSION=${VERSION} --build-arg RUN_TYPE=${RUN_TYPE} --platform=linux/arm64,linux/amd64 . --push +docker buildx build -f Dockerfile -t icodex/edge-${RUN_TYPE}:${IMG_VERSION} --build-arg RUN_TYPE=${RUN_TYPE} --build-arg VERSION=${VERSION} --platform=linux/arm64,linux/amd64 . --push diff --git a/docker/build/install.sh b/docker/build/install.sh index a867ca4..eef6dd0 100755 --- a/docker/build/install.sh +++ b/docker/build/install.sh @@ -24,18 +24,30 @@ function install_edges() { case "$1" in "admin") - TAR_URL="https://dl.goedge.cn/edge/v${VERSION}/edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip" + TAR_URL="https://static-file-global.353355.xyz/goedge/edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip" TAR_FILE="edge-admin-linux-${GOARCH}-plus-v${VERSION}.zip" mv /build/run_admin.sh ${ROOT_DIR}/run.sh ;; "node") apk add --no-cache nftables - TAR_URL="https://dl.goedge.cn/edge-node/v${VERSION}/edge-node-linux-${GOARCH}-plus-v${VERSION}.zip" + TAR_URL="https://static-file-global.353355.xyz/goedge/edge-node-linux-${GOARCH}-plus-v${VERSION}.zip" TAR_FILE="edge-node-linux-${GOARCH}-plus-v${VERSION}.zip" mv /build/run_node.sh ${ROOT_DIR}/run.sh ;; + "user") + TAR_URL="https://static-file-global.353355.xyz/goedge/edge-user-linux-${GOARCH}-v${VERSION}.zip" + TAR_FILE="edge-user-linux-${GOARCH}-v${VERSION}.zip" + + mv /build/run_user.sh ${ROOT_DIR}/run.sh + ;; + "dns") + TAR_URL="https://static-file-global.353355.xyz/goedge/edge-dns-linux-${GOARCH}-v${VERSION}.zip" + TAR_FILE="edge-dns-linux-${GOARCH}-v${VERSION}.zip" + + mv /build/run_dns.sh ${ROOT_DIR}/run.sh + ;; *) echo "unknown type: ${1}" exit diff --git a/docker/build/run_admin.sh b/docker/build/run_admin.sh index 49f0f76..05cfc35 100755 --- a/docker/build/run_admin.sh +++ b/docker/build/run_admin.sh @@ -1,4 +1,16 @@ #!/usr/bin/env sh +. /build/set_hosts.sh + +cat <> ${ROOT_DIR}/edge-dns/configs/api_dns.yaml << EOF +rpc.endpoints: [ "${ENDPOINTS}" ] +clusterId: "${CLUSTERID}" +secret: "${SECRET}" +EOF + fi +} + +ROOT_DIR='/usr/local/goedge' + +set_hosts +pre_config +${ROOT_DIR}/edge-dns/bin/edge-dns diff --git a/docker/build/run_node.sh b/docker/build/run_node.sh index 2b05592..5dddf04 100755 --- a/docker/build/run_node.sh +++ b/docker/build/run_node.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh -ROOT_DIR='/usr/local/goedge' +. /build/set_hosts.sh function pre_config() { if [ ! -e ${ROOT_DIR}/edge-node/configs/api_cluster.yaml ]; then @@ -13,8 +13,11 @@ EOF fi } +ROOT_DIR='/usr/local/goedge' + mkdir -p /opt/cache chmod 777 /opt/cache +set_hosts pre_config ${ROOT_DIR}/edge-node/bin/edge-node diff --git a/docker/build/run_user.sh b/docker/build/run_user.sh new file mode 100755 index 0000000..3c10494 --- /dev/null +++ b/docker/build/run_user.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env sh + +. /build/set_hosts.sh + +function pre_config() { + if [ ! -e ${ROOT_DIR}/edge-user/configs/api_user.yaml ]; then + touch ${ROOT_DIR}/edge-user/configs/api_user.yaml +cat >> ${ROOT_DIR}/edge-user/configs/api_user.yaml << EOF +rpc.endpoints: [ "${ENDPOINTS}" ] +nodeId: "${NODEID}" +secret: "${SECRET}" +EOF + fi +} + +ROOT_DIR='/usr/local/goedge' + +set_hosts +pre_config +${ROOT_DIR}/edge-user/bin/edge-user diff --git a/docker/build/set_hosts.sh b/docker/build/set_hosts.sh new file mode 100755 index 0000000..3b9f722 --- /dev/null +++ b/docker/build/set_hosts.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + +function set_hosts() { + cat > /etc/hosts <