From 0eb8b03eb62f92f925d2ecb3a696607b1237cf4a Mon Sep 17 00:00:00 2001 From: toki Date: Tue, 2 Jun 2026 18:06:44 +0900 Subject: [PATCH] =?UTF-8?q?feat(edge):=20envsubst=20=ED=85=9C=ED=94=8C?= =?UTF-8?q?=EB=A6=BF=20=EA=B8=B0=EB=B0=98=EC=9C=BC=EB=A1=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=EC=9D=84=20=EC=A0=84=ED=99=98=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Edge Dockerfile에서 envsubst를 사용해 환경 변수를 템플릿에 대입한 후 설정 파일을 생성하도록 변경한다. - Dockerfile에 gettext 패키지를 추가한다 - configs/edge-compose.yaml을 configs/edge-compose.yaml.tmpl로 전환하여 환경 변수 대치 지원 - docker-compose.yml edge 서비스에 환경 변수를 명시적으로 전달 --- apps/edge/Dockerfile | 8 ++++---- .../{edge-compose.yaml => edge-compose.yaml.tmpl} | 14 +++++++------- docker-compose.yml | 8 ++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) rename configs/{edge-compose.yaml => edge-compose.yaml.tmpl} (78%) diff --git a/apps/edge/Dockerfile b/apps/edge/Dockerfile index 6a688d4..17fe3b2 100644 --- a/apps/edge/Dockerfile +++ b/apps/edge/Dockerfile @@ -16,14 +16,14 @@ RUN CGO_ENABLED=0 GOFLAGS=-trimpath go build -o /out/edge ./apps/edge/cmd/edge FROM alpine:3.22 -RUN addgroup -S iop && adduser -S iop -G iop +RUN apk add --no-cache gettext && addgroup -S iop && adduser -S iop -G iop WORKDIR /app COPY --from=builder /out/edge /usr/local/bin/edge -COPY --from=builder /workspace/iop/configs/edge-compose.yaml /app/configs/edge-compose.yaml +COPY --from=builder /workspace/iop/configs/edge-compose.yaml.tmpl /app/configs/edge-compose.yaml.tmpl EXPOSE 9090 USER iop -ENTRYPOINT ["edge"] -CMD ["serve", "--config", "/app/configs/edge-compose.yaml"] +ENTRYPOINT ["/bin/sh", "-c"] +CMD ["envsubst < /app/configs/edge-compose.yaml.tmpl > /tmp/edge-compose.yaml && exec edge serve --config /tmp/edge-compose.yaml"] diff --git a/configs/edge-compose.yaml b/configs/edge-compose.yaml.tmpl similarity index 78% rename from configs/edge-compose.yaml rename to configs/edge-compose.yaml.tmpl index c4523e0..2edbf8b 100644 --- a/configs/edge-compose.yaml +++ b/configs/edge-compose.yaml.tmpl @@ -1,9 +1,9 @@ edge: - id: "edge-compose" - name: "Compose Edge" + id: "${IOP_EDGE_ID}" + name: "${IOP_EDGE_NAME}" server: - listen: "0.0.0.0:9090" + listen: "${IOP_EDGE_LISTEN}" advertise_host: "" bootstrap: @@ -24,7 +24,7 @@ metrics: control_plane: enabled: true - wire_addr: "control-plane:19081" + wire_addr: "${IOP_CONTROL_PLANE_EDGE_WIRE_ADDR}" reconnect_interval_sec: 5 a2a: @@ -41,9 +41,9 @@ console: timeout_sec: 300 nodes: - - id: "external-node" - alias: "external-node" - token: "changeme" + - id: "${IOP_EDGE_NODE_ID}" + alias: "${IOP_EDGE_NODE_ALIAS}" + token: "${IOP_EDGE_NODE_TOKEN}" adapters: cli: enabled: true diff --git a/docker-compose.yml b/docker-compose.yml index 006adab..cd8ada5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,14 @@ services: context: .. dockerfile: iop/apps/edge/Dockerfile restart: unless-stopped + environment: + IOP_EDGE_ID: "${IOP_EDGE_ID:-edge-compose}" + IOP_EDGE_NAME: "${IOP_EDGE_NAME:-Compose Edge}" + IOP_EDGE_LISTEN: "0.0.0.0:9090" + IOP_CONTROL_PLANE_EDGE_WIRE_ADDR: "control-plane:19081" + IOP_EDGE_NODE_ID: "${IOP_EDGE_NODE_ID:-external-node}" + IOP_EDGE_NODE_ALIAS: "${IOP_EDGE_NODE_ALIAS:-external-node}" + IOP_EDGE_NODE_TOKEN: "${IOP_EDGE_NODE_TOKEN:?set IOP_EDGE_NODE_TOKEN for external node access}" ports: - "${IOP_EDGE_NODE_BIND:-0.0.0.0}:${IOP_EDGE_NODE_PORT:-19090}:9090" depends_on: