Patryk M. Gutowski 2 місяців тому
коміт
d420dbe340
5 змінених файлів з 60 додано та 0 видалено
  1. 7 0
      Dockerfile
  2. 1 0
      README.md
  3. 36 0
      app.py
  4. 14 0
      podman-compose.yml
  5. 2 0
      requirements.txt

+ 7 - 0
Dockerfile

@@ -0,0 +1,7 @@
+FROM python:3.11-slim
+WORKDIR /app
+COPY requirements.txt .
+RUN pip install --no-cache-dir -r requirements.txt
+COPY app.py .
+EXPOSE 5000
+CMD ["python","app.py"]

+ 1 - 0
README.md

@@ -0,0 +1 @@
+Instructions for running with Podman.

+ 36 - 0
app.py

@@ -0,0 +1,36 @@
+from flask import Flask, request, render_template_string
+from selenium import webdriver
+from selenium.webdriver.chrome.options import Options
+from selenium.webdriver.common.by import By
+import os, time
+
+SELENIUM_URL = os.getenv("SELENIUM_URL","http://localhost:4444/wd/hub")
+app = Flask(__name__)
+
+HTML = """<h1>Upload</h1>
+<form method=post enctype=multipart/form-data>
+<input type=file name=photo><input type=submit>
+</form><p>{{msg}}</p>"""
+
+def driver():
+    opts=Options()
+    opts.add_argument("--no-sandbox")
+    opts.add_argument("--disable-dev-shm-usage")
+    return webdriver.Remote(command_executor=SELENIUM_URL, options=opts)
+
+@app.route("/",methods=["GET","POST"])
+def index():
+    if request.method=="GET":
+        return render_template_string(HTML,msg="")
+    f=request.files.get("photo")
+    if not f: return render_template_string(HTML,msg="No file")
+    d=driver()
+    try:
+        d.get("https://www.vinted.pl")
+        time.sleep(3)
+    finally:
+        d.quit()
+    return render_template_string(HTML,msg="Demo executed")
+
+if __name__=="__main__":
+    app.run(host="0.0.0.0",port=5000)

+ 14 - 0
podman-compose.yml

@@ -0,0 +1,14 @@
+version: "3"
+services:
+  selenium:
+    image: selenium/standalone-chrome:latest
+    ports:
+      - "4444:4444"
+    network_mode: service:webapp
+
+  webapp:
+    image: vinted-webapp:latest
+    environment:
+      SELENIUM_URL: "http://localhost:4444/wd/hub"
+    ports:
+      - "5000:5000"

+ 2 - 0
requirements.txt

@@ -0,0 +1,2 @@
+flask
+selenium