Browse Source

docker implementation (windows)
TODO: switch to linux? wsl

spacexerq 2 weeks ago
parent
commit
e7a29950b1

+ 17 - 0
spectrometer_service/mserv00/Dockerfile

@@ -0,0 +1,17 @@
+FROM python:3.12-windowsservercore
+
+WORKDIR C:/app
+
+ARG APP_VERSION=dev
+ENV APP_VERSION=${APP_VERSION}
+ENV SERVICE_PORT=2456
+
+COPY requirements.txt .
+RUN python -m pip install --upgrade pip && python -m pip install -r requirements.txt
+
+COPY . .
+RUN powershell -NoProfile -Command "Set-Content -Encoding ascii -Path C:/app/VERSION -Value $env:APP_VERSION"
+
+EXPOSE 2456
+
+CMD powershell -NoProfile -Command "Start-Process -FilePath 'C:/app/bin/pico-tcp.exe' -WorkingDirectory 'C:/app/bin'; python manage.py runserver 0.0.0.0:$env:SERVICE_PORT"

+ 1 - 0
spectrometer_service/mserv00/VERSION

@@ -0,0 +1 @@
+1.0.0

+ 15 - 0
spectrometer_service/mserv00/docker-compose.yml

@@ -0,0 +1,15 @@
+services:
+  srv-hardware:
+    platform: windows/amd64
+    container_name: srv-hardware
+    build:
+      context: .
+      args:
+        APP_VERSION: ${APP_VERSION:-dev}
+    image: srv-hardware:${APP_VERSION:-dev}
+    environment:
+      SERVICE_PORT: ${SERVICE_PORT:-2456}
+      APP_VERSION: ${APP_VERSION:-dev}
+    ports:
+      - "${SERVICE_PORT:-2456}:${SERVICE_PORT:-2456}"
+    restart: unless-stopped

+ 18 - 9
spectrometer_service/mserv00/mserv00/settings.py

@@ -10,6 +10,7 @@ For the full list of settings and their values, see
 https://docs.djangoproject.com/en/5.2/ref/settings/
 """
 
+import os
 from pathlib import Path
 
 # Build paths inside the project like this: BASE_DIR / 'subdir'.
@@ -75,16 +76,24 @@ WSGI_APPLICATION = 'mserv00.wsgi.application'
 # Database
 # https://docs.djangoproject.com/en/5.2/ref/settings/#databases
 
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.postgresql',
-        'NAME': 'specdata',
-        'USER': 'specadmin',
-        'PASSWORD': 'specadmin',
-        'HOST': 'localhost',
-        'PORT': '5432',
+if os.getenv('USE_POSTGRES', '').lower() in {'1', 'true', 'yes'}:
+    DATABASES = {
+        'default': {
+            'ENGINE': 'django.db.backends.postgresql',
+            'NAME': os.getenv('POSTGRES_DB', 'specdata'),
+            'USER': os.getenv('POSTGRES_USER', 'specadmin'),
+            'PASSWORD': os.getenv('POSTGRES_PASSWORD', 'specadmin'),
+            'HOST': os.getenv('POSTGRES_HOST', 'localhost'),
+            'PORT': os.getenv('POSTGRES_PORT', '5432'),
+        }
+    }
+else:
+    DATABASES = {
+        'default': {
+            'ENGINE': 'django.db.backends.sqlite3',
+            'NAME': BASE_DIR / 'db.sqlite3',
+        }
     }
-}
 
 
 # Password validation

+ 3 - 0
spectrometer_service/mserv00/readme.txt

@@ -0,0 +1,3 @@
+cd D:\Projects\lowfield_mri_programs\spectrometer_service\mserv00
+$env:APP_VERSION = (Get-Content .\VERSION).Trim()
+docker compose up --build

+ 1 - 0
spectrometer_service/mserv00/requirements.txt

@@ -19,3 +19,4 @@ sqlparse==0.5.3
 typing_extensions==4.14.0
 tzdata==2025.2
 urllib3==2.5.0
+psycopg[binary]==3.3.3