Compare commits

...

3 Commits

Author SHA1 Message Date
35bfeeb51e Added correct env path import 2025-07-05 10:12:49 +02:00
dfbc840c69 Optimized default port 2025-07-05 09:40:11 +02:00
1bea9703ea Added port via env 2025-07-05 09:32:07 +02:00
7 changed files with 34 additions and 11 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,4 @@
app/config.yaml
*__pycache__*
app/static/cache/*
app/static/cache/*
.env

View File

@@ -11,8 +11,11 @@ RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY app/ .
# Expose port
EXPOSE 5000
# Set default port environment variable
ENV PORT=5000
# Start command
CMD ["python", "app.py"]
# Expose port (optional for documentation)
EXPOSE ${PORT}
# Start command using shell to allow env substitution
CMD ["sh", "-c", "exec python app.py --port=${PORT}"]

View File

@@ -64,4 +64,5 @@ def index():
)
if __name__ == "__main__":
app.run(debug=(FLASK_ENV == "development"), host="0.0.0.0", port=5000)
port = int(os.getenv("PORT", 5000))
app.run(debug=(FLASK_ENV == "development"), host="0.0.0.0", port=port)

View File

@@ -1,3 +1,5 @@
version: '3.8'
services:
portfolio:
build:
@@ -6,7 +8,9 @@ services:
image: application-portfolio
container_name: portfolio
ports:
- "5000:5000"
- "${PORT:-5000}:${PORT:-5000}"
volumes:
- ./app:/app
environment:
- PORT=${PORT:-5000}
restart: unless-stopped

2
env.example Normal file
View File

@@ -0,0 +1,2 @@
PORT=5000
FLASK_ENV=production

19
main.py
View File

@@ -22,6 +22,17 @@ import argparse
import subprocess
import sys
import os
from dotenv import load_dotenv
from pathlib import Path
# Always load .env from the script's directory
dotenv_path = Path(__file__).resolve().parent / ".env"
if dotenv_path.exists():
load_dotenv(dotenv_path)
else:
print(f"⚠️ Warning: No .env file found at {dotenv_path}")
PORT = int(os.getenv("PORT", 5000))
def run_command(command, dry_run=False):
"""Utility function to run a shell command."""
@@ -94,7 +105,7 @@ def run_dev(args):
volume_mapping = f"{current_dir}/app/:/app"
command = [
"docker", "run", "-d",
"-p", "5000:5000",
"-p", f"{PORT}:{PORT}",
"--name", "portfolio",
"-v", volume_mapping,
"-e", "FLASK_APP=app.py",
@@ -115,7 +126,7 @@ def run_prod(args):
"""
command = [
"docker", "run", "-d",
"-p", "5000:5000",
"-p", "{PORT}:{PORT}",
"--name", "portfolio",
"application-portfolio"
]
@@ -194,7 +205,7 @@ def browse(args):
This command launches the Chromium browser to view the running application.
"""
command = ["chromium", "http://localhost:5000"]
command = ["chromium", f"http://localhost:{PORT}"]
run_command(command, args.dry_run)
@@ -222,7 +233,7 @@ def main():
# Browse command
parser_browse = subparsers.add_parser(
"browse", help="Open http://localhost:5000 in Chromium browser."
"browse", help="Open application in Chromium browser."
)
parser_browse.set_defaults(func=browse)

1
requirements.txt Normal file
View File

@@ -0,0 +1 @@
python-dotenv