From fa16f6ffcfd2da4d15b19aa464ee65340f188f79 Mon Sep 17 00:00:00 2001
From: Maxim Podosochnyy <podosochnyy@perx.ru>
Date: Fri, 30 Jun 2023 17:14:53 +0700
Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 examples/extension_service/.gitignore         |  2 +-
 examples/extension_service/Dockerfile.local   | 22 +++++++++++++++++++
 .../docker-compose.override.example.yml       | 14 ++++++++++++
 examples/extension_service/docker-compose.yml |  6 ++---
 examples/extension_service/readme.md          |  9 ++++++++
 examples/extension_service/watchdog.sh        |  2 ++
 6 files changed, 50 insertions(+), 5 deletions(-)
 create mode 100644 examples/extension_service/Dockerfile.local
 create mode 100644 examples/extension_service/docker-compose.override.example.yml
 create mode 100644 examples/extension_service/watchdog.sh

diff --git a/examples/extension_service/.gitignore b/examples/extension_service/.gitignore
index fbc6772..1e0cc99 100644
--- a/examples/extension_service/.gitignore
+++ b/examples/extension_service/.gitignore
@@ -1 +1 @@
-.docker-compose.override.yml
\ No newline at end of file
+docker-compose.override.yml
\ No newline at end of file
diff --git a/examples/extension_service/Dockerfile.local b/examples/extension_service/Dockerfile.local
new file mode 100644
index 0000000..994d988
--- /dev/null
+++ b/examples/extension_service/Dockerfile.local
@@ -0,0 +1,22 @@
+FROM python:3.9-slim
+
+ENV PYTHONDONTWRITEBYTECODE=1
+ENV PYTHONUNBUFFERED=1
+ENV USER=perx
+
+RUN mkdir -p /home/${USER}/data /home/${USER}/app /home/${USER}/logs
+WORKDIR /home/${USER}/app
+
+ARG PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
+ENV PIP_EXTRA_INDEX_URL=$PIP_EXTRA_INDEX_URL
+
+COPY . /home/${USER}/app
+RUN pip install perxis==0.0.16
+RUN pip install 'watchdog[watchmedo]'
+
+ENV PYTHONPATH="/home/perx/app"
+ENV PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
+
+#CMD ["python", "/home/perx/app/server.py"]
+#CMD ["watchmedo auto-restart --recursive --signal SIGTERM python /home/perx/app/server.py"]
+CMD ["sh", "watchdog.sh"]
\ No newline at end of file
diff --git a/examples/extension_service/docker-compose.override.example.yml b/examples/extension_service/docker-compose.override.example.yml
new file mode 100644
index 0000000..855146c
--- /dev/null
+++ b/examples/extension_service/docker-compose.override.example.yml
@@ -0,0 +1,14 @@
+version: "3.9"
+
+services:
+  demo-ext-backend:
+    build:
+      context: .
+      dockerfile: Dockerfile.local
+      args:
+        - PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
+    ports:
+      - 50051:50051
+    volumes:
+      - .:/home/perx/app
+      - <Путь к интерпретатору питона>/site-packages/perxis:/usr/local/lib/python3.9/site-packages/perxis
\ No newline at end of file
diff --git a/examples/extension_service/docker-compose.yml b/examples/extension_service/docker-compose.yml
index 52b018e..ec4c728 100644
--- a/examples/extension_service/docker-compose.yml
+++ b/examples/extension_service/docker-compose.yml
@@ -2,15 +2,13 @@ version: "3.9"
 
 services:
   demo-ext-backend:
-    ports:
-      - 50051:50051
     build:
       context: .
+      dockerfile: Dockerfile
       args:
         - PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
     restart: unless-stopped
-    volumes:
-      - .:/home/perx/app
+
     networks:
       - storage
       - default
diff --git a/examples/extension_service/readme.md b/examples/extension_service/readme.md
index fad54db..28146c6 100644
--- a/examples/extension_service/readme.md
+++ b/examples/extension_service/readme.md
@@ -3,3 +3,12 @@
 2. Указать переменную PIP_EXTRA_INDEX_URL
 3. docker-compose up
 
+Для того чтобы работал hot reaload и была возможность изменения библиотеки perxis без публикации новой версии нужно: 
+1. Создать файл docker-compose.override.yml
+2. Скопировать в него содержимое docker-compose.override.example.yml
+3. Установить на локальный интерпретатор пакет perxis-python
+4. В файле docker-compose.override.yml указать путь до site-packages локального интерпретатора
+
+После этого при изменениях в исходном коде (включая правки в пакете perxis) будет перезагружен сервис. Изменения в пакет
+perxis нужно будет вносить на локальной машине в каталоге <путь до site-packages>/perxis
+
diff --git a/examples/extension_service/watchdog.sh b/examples/extension_service/watchdog.sh
new file mode 100644
index 0000000..388214e
--- /dev/null
+++ b/examples/extension_service/watchdog.sh
@@ -0,0 +1,2 @@
+watchmedo auto-restart --pattern "*.py;*.json" --recursive --signal SIGTERM \
+    python ./server.py
\ No newline at end of file
-- 
GitLab