]> Untitled Git - web-gallery.git/commitdiff
Version update 1.1.0 1.1.0
authorClifton Palmer <clifton.james.palmer@protonmail.com>
Tue, 31 Oct 2023 20:25:41 +0000 (15:25 -0500)
committerClifton Palmer <clifton.james.palmer@protonmail.com>
Tue, 31 Oct 2023 20:25:41 +0000 (15:25 -0500)
* Fixed templates not being copied into their folders
* Refactored navigator and server layout
* Added prod compose file

19 files changed:
Dockerfile [deleted file]
app/app.py [deleted file]
app/templates/gallery.html [deleted file]
app/templates/hello.html [deleted file]
app/templates/page.html [deleted file]
app/templates/pages.html [deleted file]
docker-compose-prod.yml [new file with mode: 0644]
docker-compose.yml
navigator/Dockerfile [new file with mode: 0644]
navigator/app/app.py [new file with mode: 0644]
navigator/app/templates/gallery.html [new file with mode: 0644]
navigator/app/templates/hello.html [new file with mode: 0644]
navigator/app/templates/page.html [new file with mode: 0644]
navigator/app/templates/pages.html [new file with mode: 0644]
navigator/requirements.txt [new file with mode: 0644]
nginx.conf [deleted file]
requirements.txt [deleted file]
server/Dockerfile [new file with mode: 0644]
server/nginx.conf [new file with mode: 0644]

diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644 (file)
index 1d580e7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-FROM python:3.7-alpine
-
-ENV FLASK_APP=app.py
-ENV FLASK_RUN_HOST=0.0.0.0
-ENV FLASK_PORT=5000
-
-EXPOSE 5000
-
-RUN apk update && \
-    apk add --no-cache gcc musl-dev linux-headers libpq-dev python3-dev
-
-WORKDIR /app
-COPY ./requirements.txt /app
-RUN pip install -r requirements.txt
-
-COPY ./app/app.py    /app
-COPY ./app/templates /app
-
-CMD ["flask", "run"]
diff --git a/app/app.py b/app/app.py
deleted file mode 100644 (file)
index 33aac3d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-from flask import Flask, render_template
-import os
-import re
-
-app = Flask(__name__)
-gallery_root = "/app/gallery"
-get_num_regex = re.compile(r'\d+')
-
-@app.route('/')
-def render_gallery():
-    gallery_names = []
-    with os.scandir(gallery_root) as galleries:
-        for gallery in galleries:
-            if not gallery.is_file():
-                gallery_names.append(gallery.name)
-    gallery_names.sort()
-    return render_template( 'gallery.html', galleries=gallery_names )
-
-def get_page_number_from_name(name):
-    try:
-        return int(get_num_regex.findall(name)[-1]) 
-    except IndexError:
-        print ("Index error on name " + name, flush=True)
-        return -1
-
-@app.route('/<gallery>')
-def render_pages(gallery=None):
-    template_pages = []
-    with os.scandir(gallery_root + "/" + gallery) as pages:
-        for page in pages:
-            if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
-                template_pages.append({
-                    'name': page.name, 
-                    'number': get_page_number_from_name(page.name)
-                    })
-    template_pages = sorted(template_pages, key=lambda page: page['number'])
-    return render_template( 'pages.html', gallery=gallery, pages=template_pages )
-
-@app.route('/<gallery>/<int:page_num>')
-def render_page(gallery=None, page_num=None):
-
-    # find a page that I think corrosponds to this page number
-    page_name = None
-    with os.scandir(gallery_root + "/" + gallery) as pages:
-        for page in pages:
-            if page.is_file():
-                num = get_page_number_from_name(page.name)
-                if int(page_num) == int(num):
-                    page_name = page.name
-                    break
-
-    # if found, create src link to that page
-    if page_name:
-        src = '/images/{}/{}'.format( gallery, page_name )
-        prev_page_url = "/{}/{}".format( gallery, page_num - 1)
-        next_page_url = "/{}/{}".format( gallery, page_num + 1)
-
-        return render_template( 'page.html',
-            gallery=gallery, page_num=page_num,
-            title=page_name, src=src, alt=page_name,
-            prev_page_url=prev_page_url,
-            next_page_url=next_page_url )
-    else:
-        return 'No page found'
diff --git a/app/templates/gallery.html b/app/templates/gallery.html
deleted file mode 100644 (file)
index 375ad57..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <title>Gallery</title>
-</head>
-<body>
-    <h1>Gallery</h1>
-
-    <ul id="navigation">
-    {% for gallery in galleries %}
-        <li><a href="{{ gallery }}">{{ gallery }}</a></li>
-    {% endfor %}
-    </ul>
-</body>
-</html>
diff --git a/app/templates/hello.html b/app/templates/hello.html
deleted file mode 100644 (file)
index ce4191f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<body>
-<p>Hello, world!</p>
-</body>
-</html>
diff --git a/app/templates/page.html b/app/templates/page.html
deleted file mode 100644 (file)
index fe075ed..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <title>{{ title }}</title>
-</head>
-<body style='background-color: black'>
-<center>
-<div style='height: 99vh'>
-<a href="{{ next_page_url }}">
-    <img style='height: 100%; width: 100%; object-fit: contain'
-        src="{{ src }}" alt="{{ alt }}" />
-</a>
-</div>
-<p><a href="/">Home</a> | <a href="/{{ gallery }}">{{ gallery }}</a> | <a href="{{ prev_page_url }}">Prev</a>, <a href="{{ next_page_url }}">Next</a></p>
-</center>
-</body>
-</html>
diff --git a/app/templates/pages.html b/app/templates/pages.html
deleted file mode 100644 (file)
index c1204c9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <title>Pages</title>
-</head>
-<body>
-    <h1>Pages</h1>
-
-    <ul id="navigation">
-    {% for page in pages %}
-        <li><a href="{{ gallery }}/{{ page.number }}">{{ page.number }}</a></li>
-    {% endfor %}
-    </ul>
-</body>
-</html>
diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml
new file mode 100644 (file)
index 0000000..7e64b7f
--- /dev/null
@@ -0,0 +1,25 @@
+version: '3'
+networks:
+    proxy:
+        external: true
+services:
+    navigator:
+        image: cjpalmer/gallery-navigator:1.1.0
+        volumes:
+        - gallery_data:/app/gallery
+    server:
+        image: cjpalmer/gallery-server:1.1.0
+        volumes:
+        - gallery_data:/data/images
+        depends_on:
+        - navigator
+        networks:
+        - default
+        - proxy
+volumes:
+    gallery_data:
+        driver: local
+        driver_opts:
+            o: bind
+            type: none
+            device: /mnt/gallery_data
index 0dcd45031f846780a42b5974c12e8413e5af40b4..312c82d7508e09da56d79ebafb7db9a11477fdc0 100644 (file)
@@ -1,31 +1,21 @@
 version: '3'
 services:
-    db:
-        image: postgres:13.4-alpine
+    navigator:
+        build: ./navigator
+        image: cjpalmer/gallery-navigator:1.1.0
+        volumes:
+        - gallery_data:/app/gallery
         environment:
-            POSTGRES_USER: admin
-            POSTGRES_PASSWORD: adminpw
-        ports:
-        - 5432:5432
-    web:
-        image: nginx:1.17
+            FLASK_DEBUG: 1
+    server:
+        build: ./server
+        image: cjpalmer/gallery-server:1.1.0
         volumes:
-        - ./nginx.conf:/etc/nginx/nginx.conf
         - gallery_data:/data/images
         ports:
         - 80:80
         depends_on:
-        - gallery
-    gallery:
-        build: .
-        image: cjpalmer/gallery:1.0.0
-        volumes:
-        - gallery_data:/app/gallery
-        - ./app:/app
-        environment:
-            FLASK_DEBUG: 1
-        depends_on:
-        - db
+        - navigator
 volumes:
     gallery_data:
         driver: local
diff --git a/navigator/Dockerfile b/navigator/Dockerfile
new file mode 100644 (file)
index 0000000..6591257
--- /dev/null
@@ -0,0 +1,19 @@
+FROM python:3.7-alpine
+
+ENV FLASK_APP=app.py
+ENV FLASK_RUN_HOST=0.0.0.0
+ENV FLASK_PORT=5000
+
+EXPOSE 5000
+
+RUN apk update && \
+    apk add --no-cache gcc musl-dev linux-headers libpq-dev python3-dev
+
+WORKDIR /app
+COPY ./requirements.txt /app
+RUN pip install -r requirements.txt
+
+COPY ./app/app.py     /app
+COPY ./app/templates/ /app/templates/
+
+CMD ["flask", "run"]
diff --git a/navigator/app/app.py b/navigator/app/app.py
new file mode 100644 (file)
index 0000000..33aac3d
--- /dev/null
@@ -0,0 +1,64 @@
+from flask import Flask, render_template
+import os
+import re
+
+app = Flask(__name__)
+gallery_root = "/app/gallery"
+get_num_regex = re.compile(r'\d+')
+
+@app.route('/')
+def render_gallery():
+    gallery_names = []
+    with os.scandir(gallery_root) as galleries:
+        for gallery in galleries:
+            if not gallery.is_file():
+                gallery_names.append(gallery.name)
+    gallery_names.sort()
+    return render_template( 'gallery.html', galleries=gallery_names )
+
+def get_page_number_from_name(name):
+    try:
+        return int(get_num_regex.findall(name)[-1]) 
+    except IndexError:
+        print ("Index error on name " + name, flush=True)
+        return -1
+
+@app.route('/<gallery>')
+def render_pages(gallery=None):
+    template_pages = []
+    with os.scandir(gallery_root + "/" + gallery) as pages:
+        for page in pages:
+            if page.is_file() and page.name.endswith('.png') or page.name.endswith('.jpg'):
+                template_pages.append({
+                    'name': page.name, 
+                    'number': get_page_number_from_name(page.name)
+                    })
+    template_pages = sorted(template_pages, key=lambda page: page['number'])
+    return render_template( 'pages.html', gallery=gallery, pages=template_pages )
+
+@app.route('/<gallery>/<int:page_num>')
+def render_page(gallery=None, page_num=None):
+
+    # find a page that I think corrosponds to this page number
+    page_name = None
+    with os.scandir(gallery_root + "/" + gallery) as pages:
+        for page in pages:
+            if page.is_file():
+                num = get_page_number_from_name(page.name)
+                if int(page_num) == int(num):
+                    page_name = page.name
+                    break
+
+    # if found, create src link to that page
+    if page_name:
+        src = '/images/{}/{}'.format( gallery, page_name )
+        prev_page_url = "/{}/{}".format( gallery, page_num - 1)
+        next_page_url = "/{}/{}".format( gallery, page_num + 1)
+
+        return render_template( 'page.html',
+            gallery=gallery, page_num=page_num,
+            title=page_name, src=src, alt=page_name,
+            prev_page_url=prev_page_url,
+            next_page_url=next_page_url )
+    else:
+        return 'No page found'
diff --git a/navigator/app/templates/gallery.html b/navigator/app/templates/gallery.html
new file mode 100644 (file)
index 0000000..375ad57
--- /dev/null
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>Gallery</title>
+</head>
+<body>
+    <h1>Gallery</h1>
+
+    <ul id="navigation">
+    {% for gallery in galleries %}
+        <li><a href="{{ gallery }}">{{ gallery }}</a></li>
+    {% endfor %}
+    </ul>
+</body>
+</html>
diff --git a/navigator/app/templates/hello.html b/navigator/app/templates/hello.html
new file mode 100644 (file)
index 0000000..ce4191f
--- /dev/null
@@ -0,0 +1,5 @@
+<html>
+<body>
+<p>Hello, world!</p>
+</body>
+</html>
diff --git a/navigator/app/templates/page.html b/navigator/app/templates/page.html
new file mode 100644 (file)
index 0000000..fe075ed
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>{{ title }}</title>
+</head>
+<body style='background-color: black'>
+<center>
+<div style='height: 99vh'>
+<a href="{{ next_page_url }}">
+    <img style='height: 100%; width: 100%; object-fit: contain'
+        src="{{ src }}" alt="{{ alt }}" />
+</a>
+</div>
+<p><a href="/">Home</a> | <a href="/{{ gallery }}">{{ gallery }}</a> | <a href="{{ prev_page_url }}">Prev</a>, <a href="{{ next_page_url }}">Next</a></p>
+</center>
+</body>
+</html>
diff --git a/navigator/app/templates/pages.html b/navigator/app/templates/pages.html
new file mode 100644 (file)
index 0000000..c1204c9
--- /dev/null
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>Pages</title>
+</head>
+<body>
+    <h1>Pages</h1>
+
+    <ul id="navigation">
+    {% for page in pages %}
+        <li><a href="{{ gallery }}/{{ page.number }}">{{ page.number }}</a></li>
+    {% endfor %}
+    </ul>
+</body>
+</html>
diff --git a/navigator/requirements.txt b/navigator/requirements.txt
new file mode 100644 (file)
index 0000000..ec23c0a
--- /dev/null
@@ -0,0 +1,2 @@
+psycopg2
+flask
diff --git a/nginx.conf b/nginx.conf
deleted file mode 100644 (file)
index cff3e3b..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-worker_processes auto;
-
-events {
-    worker_connections 1024;
-}
-
-http {
-    server {
-        location / {
-            proxy_pass http://gallery:5000;
-        }
-
-        location /images {
-            root /data;
-        }
-    }
-}
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644 (file)
index ec23c0a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-psycopg2
-flask
diff --git a/server/Dockerfile b/server/Dockerfile
new file mode 100644 (file)
index 0000000..139fc01
--- /dev/null
@@ -0,0 +1,3 @@
+FROM nginx:1.17
+
+COPY ./nginx.conf /etc/nginx/nginx.conf
diff --git a/server/nginx.conf b/server/nginx.conf
new file mode 100644 (file)
index 0000000..63aacef
--- /dev/null
@@ -0,0 +1,17 @@
+worker_processes auto;
+
+events {
+    worker_connections 1024;
+}
+
+http {
+    server {
+        location / {
+            proxy_pass http://navigator:5000;
+        }
+
+        location /images {
+            root /data;
+        }
+    }
+}