From d60d4d7c246c7d8635e09d1ae8e603f2f1c251e7 Mon Sep 17 00:00:00 2001 From: "Muhamad H. Asadi" Date: Sat, 23 Sep 2023 00:26:47 +0330 Subject: [PATCH] some change of locations --- server/Dockerfile | 22 ++++++++++++++ server/docker-compose.yml | 29 +++++++++++++++++++ .../scenesense_db_init.sql | 5 ++++ server/src/requirements.txt | 4 +++ server/{ => src}/server_api.py | 9 ++++++ 5 files changed, 69 insertions(+) create mode 100644 server/Dockerfile create mode 100644 server/docker-compose.yml create mode 100644 server/docker-entrypoint-initdb.d/scenesense_db_init.sql create mode 100644 server/src/requirements.txt rename server/{ => src}/server_api.py (96%) diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 0000000..031ce50 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,22 @@ +# Use the official Python image with Python 3.10 +FROM python:3.10-slim-bookworm + +# Set the working directory to /app +WORKDIR /app + +# Copy requirements.txt into the container at /app +COPY src/requirements.txt /app/ + +# Install any needed packages specified in requirements.txt +RUN pip install --trusted-host pypi.python.org -r requirements.txt + +# Copy server file +COPY src/server_api.py /app/ +# Expose port 5000 for the Flask app to listen on +EXPOSE 5000 + +# Define environment variable for Flask to run in production mode +ENV FLASK_ENV=production + +# Run the Flask app +CMD ["python", "server_api.py"] diff --git a/server/docker-compose.yml b/server/docker-compose.yml new file mode 100644 index 0000000..4c8dfb5 --- /dev/null +++ b/server/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3' +services: + db: + image: mariadb:11.0 + container_name: scenesense-db + restart: always + env_file: + - .env + volumes: + - ./db:/var/lib/mysql + - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d + + app: + image: scenesense-server:1.2 + container_name: scenesense-app + restart: always + ports: + - "15000:5000" + env_file: + - .env + depends_on: + - db + + adminer: + image: adminer:latest + container_name: scenesense-db-adminer + restart: always + ports: + - "18000:8080" \ No newline at end of file diff --git a/server/docker-entrypoint-initdb.d/scenesense_db_init.sql b/server/docker-entrypoint-initdb.d/scenesense_db_init.sql new file mode 100644 index 0000000..efcc5d5 --- /dev/null +++ b/server/docker-entrypoint-initdb.d/scenesense_db_init.sql @@ -0,0 +1,5 @@ +CREATE TABLE records ( + id INT AUTO_INCREMENT PRIMARY KEY, + timestamp VARCHAR(255) NOT NULL, + description VARCHAR(255) NOT NULL +); diff --git a/server/src/requirements.txt b/server/src/requirements.txt new file mode 100644 index 0000000..752d047 --- /dev/null +++ b/server/src/requirements.txt @@ -0,0 +1,4 @@ +flask +flask-cors +flask_sqlalchemy +pymysql \ No newline at end of file diff --git a/server/server_api.py b/server/src/server_api.py similarity index 96% rename from server/server_api.py rename to server/src/server_api.py index 277a77f..2dde3b8 100644 --- a/server/server_api.py +++ b/server/src/server_api.py @@ -1,11 +1,20 @@ from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy +from flask_cors import CORS import datetime import os import json # Flask app instance app = Flask(__name__) +CORS(app) +# Flask app should allow the necessary HTTP methods in CORS. +CORS( + app, + resources={r"/*": {"origins": "*"}}, + allow_headers=["Content-Type", "Authorization"] +) + # Configuration for SQLAlchemy app.config[