feat(edge): envsubst 템플릿 기반으로 설정을 전환한다

Edge Dockerfile에서 envsubst를 사용해 환경 변수를 템플릿에
대입한 후 설정 파일을 생성하도록 변경한다.

- Dockerfile에 gettext 패키지를 추가한다
- configs/edge-compose.yaml을 configs/edge-compose.yaml.tmpl로
  전환하여 환경 변수 대치 지원
- docker-compose.yml edge 서비스에 환경 변수를 명시적으로 전달
This commit is contained in:
toki 2026-06-02 18:06:44 +09:00
parent 68f6e08da8
commit 0eb8b03eb6
3 changed files with 19 additions and 11 deletions

View file

@ -16,14 +16,14 @@ RUN CGO_ENABLED=0 GOFLAGS=-trimpath go build -o /out/edge ./apps/edge/cmd/edge
FROM alpine:3.22 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 WORKDIR /app
COPY --from=builder /out/edge /usr/local/bin/edge 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 EXPOSE 9090
USER iop USER iop
ENTRYPOINT ["edge"] ENTRYPOINT ["/bin/sh", "-c"]
CMD ["serve", "--config", "/app/configs/edge-compose.yaml"] CMD ["envsubst < /app/configs/edge-compose.yaml.tmpl > /tmp/edge-compose.yaml && exec edge serve --config /tmp/edge-compose.yaml"]

View file

@ -1,9 +1,9 @@
edge: edge:
id: "edge-compose" id: "${IOP_EDGE_ID}"
name: "Compose Edge" name: "${IOP_EDGE_NAME}"
server: server:
listen: "0.0.0.0:9090" listen: "${IOP_EDGE_LISTEN}"
advertise_host: "" advertise_host: ""
bootstrap: bootstrap:
@ -24,7 +24,7 @@ metrics:
control_plane: control_plane:
enabled: true enabled: true
wire_addr: "control-plane:19081" wire_addr: "${IOP_CONTROL_PLANE_EDGE_WIRE_ADDR}"
reconnect_interval_sec: 5 reconnect_interval_sec: 5
a2a: a2a:
@ -41,9 +41,9 @@ console:
timeout_sec: 300 timeout_sec: 300
nodes: nodes:
- id: "external-node" - id: "${IOP_EDGE_NODE_ID}"
alias: "external-node" alias: "${IOP_EDGE_NODE_ALIAS}"
token: "changeme" token: "${IOP_EDGE_NODE_TOKEN}"
adapters: adapters:
cli: cli:
enabled: true enabled: true

View file

@ -61,6 +61,14 @@ services:
context: .. context: ..
dockerfile: iop/apps/edge/Dockerfile dockerfile: iop/apps/edge/Dockerfile
restart: unless-stopped 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: ports:
- "${IOP_EDGE_NODE_BIND:-0.0.0.0}:${IOP_EDGE_NODE_PORT:-19090}:9090" - "${IOP_EDGE_NODE_BIND:-0.0.0.0}:${IOP_EDGE_NODE_PORT:-19090}:9090"
depends_on: depends_on: