From 93d7ae617cbb9c64ac47c87101bd82c421c3b7b4 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 18 Apr 2026 21:40:36 +0900 Subject: [PATCH] =?UTF-8?q?OCPP=20=ED=94=84=EB=A1=9D=EC=8B=9C=EB=A5=BC=20D?= =?UTF-8?q?ocker=EB=A1=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile.proxy | 10 ++++++++++ docker-compose.yml | 22 ++++++++++++++++++++-- entrypoint-proxy.sh | 24 ++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100755 Dockerfile.proxy create mode 100755 entrypoint-proxy.sh diff --git a/Dockerfile.proxy b/Dockerfile.proxy new file mode 100755 index 0000000..df5c2f7 --- /dev/null +++ b/Dockerfile.proxy @@ -0,0 +1,10 @@ +FROM python:3.11-slim + +WORKDIR /code + +RUN pip install --no-cache-dir websockets aiohttp + +COPY entrypoint-proxy.sh /code/ +RUN chmod +x /code/entrypoint-proxy.sh + +CMD ["/code/entrypoint-proxy.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index c502827..60ab9bc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.8" - services: # ── FastAPI 백엔드 ── api: @@ -22,6 +20,24 @@ services: networks: - ev-net + # ── OCPP 프록시 서버 ── + proxy: + build: + context: . + dockerfile: Dockerfile.proxy + container_name: ev-proxy + restart: unless-stopped + ports: + - "9002:9002" + - "9003:9003" + volumes: + - ./ocpp_proxy_server.py:/code/ocpp_proxy_server.py:ro + - ./proxy_control.html:/code/proxy_control.html:ro + - proxy_logs:/code/ocpp_logs + - proxy_config:/code/config + networks: + - ev-net + # ── PostgreSQL ── postgres: image: postgres:16-alpine @@ -60,6 +76,8 @@ services: volumes: pgdata: + proxy_logs: + proxy_config: networks: ev-net: diff --git a/entrypoint-proxy.sh b/entrypoint-proxy.sh new file mode 100755 index 0000000..0a8e779 --- /dev/null +++ b/entrypoint-proxy.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# 설정 파일을 영구 볼륨에서 관리 +CONFIG_DIR=/code/config + +# proxy_config.json 심링크 +if [ -f "$CONFIG_DIR/proxy_config.json" ]; then + ln -sf $CONFIG_DIR/proxy_config.json /code/proxy_config.json +else + touch /code/proxy_config.json + cp /code/proxy_config.json $CONFIG_DIR/proxy_config.json 2>/dev/null || true + ln -sf $CONFIG_DIR/proxy_config.json /code/proxy_config.json +fi + +# proxy_users.json 심링크 +if [ -f "$CONFIG_DIR/proxy_users.json" ]; then + ln -sf $CONFIG_DIR/proxy_users.json /code/proxy_users.json +else + touch /code/proxy_users.json + cp /code/proxy_users.json $CONFIG_DIR/proxy_users.json 2>/dev/null || true + ln -sf $CONFIG_DIR/proxy_users.json /code/proxy_users.json +fi + +exec python3 ocpp_proxy_server.py