From 647535ea9166d9e00ee6460f5ab785ee23fb1ecd Mon Sep 17 00:00:00 2001 From: Nak0_x Date: Fri, 10 Jan 2025 17:13:28 +0100 Subject: [PATCH] Init django app and setup docker --- Dockerfile | 16 +++ Makefile | 52 +++++++ README.MD | 33 +++++ docker-compose.yml | 23 ++++ manage.py | 22 +++ portfolio/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 135 bytes .../__pycache__/settings.cpython-311.pyc | Bin 0 -> 2656 bytes portfolio/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1020 bytes portfolio/__pycache__/wsgi.cpython-311.pyc | Bin 0 -> 661 bytes portfolio/asgi.py | 16 +++ portfolio/settings.py | 128 ++++++++++++++++++ portfolio/urls.py | 22 +++ portfolio/wsgi.py | 16 +++ requirements.txt | 3 + 15 files changed, 331 insertions(+) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.MD create mode 100644 docker-compose.yml create mode 100755 manage.py create mode 100644 portfolio/__init__.py create mode 100644 portfolio/__pycache__/__init__.cpython-311.pyc create mode 100644 portfolio/__pycache__/settings.cpython-311.pyc create mode 100644 portfolio/__pycache__/urls.cpython-311.pyc create mode 100644 portfolio/__pycache__/wsgi.cpython-311.pyc create mode 100644 portfolio/asgi.py create mode 100644 portfolio/settings.py create mode 100644 portfolio/urls.py create mode 100644 portfolio/wsgi.py create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e6e2e4e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# Use the official Python image +FROM python:3.11-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy requirements and install them +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the Django project files +COPY . . + +# Set the default command +CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9c895e2 --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +# Variables +DOCKER_COMPOSE = docker-compose +PROJECT_NAME = django-docker + +# Commands +.PHONY: services start stop restart migrate createsuperuser logs clean + +# Start all Docker services +services: + @$(DOCKER_COMPOSE) up --build -d + @echo "Docker services started." + +# Stop all Docker services +stop: + @$(DOCKER_COMPOSE) down + @echo "Docker services stopped." + +# Restart all Docker services +restart: stop services + @echo "Docker services restarted." + +# Migrate the database +migrate: + @$(DOCKER_COMPOSE) exec web python manage.py migrate + @echo "Database migrations applied." + +# Create a superuser for Django +createsuperuser: + @$(DOCKER_COMPOSE) exec web python manage.py createsuperuser + +# View logs from all services +logs: + @$(DOCKER_COMPOSE) logs -f + +# Clean up Docker resources +clean: + @$(DOCKER_COMPOSE) down -v --remove-orphans + @echo "Docker environment cleaned." + +# Run the Django development server +runserver: + @$(DOCKER_COMPOSE) exec web python manage.py runserver 0.0.0.0:8000 + +# Shell into the Django container +shell: + @$(DOCKER_COMPOSE) exec web sh + +# Run tests +test: + @$(DOCKER_COMPOSE) exec web python manage.py test + @echo "Tests completed." + diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..7cb329c --- /dev/null +++ b/README.MD @@ -0,0 +1,33 @@ +# My portfolio +This portfolio is here to be my index throught my online apps and also a place for public to check out my projects and stuff i do. + +## Project structure +myproject/ +├── manage.py +├── myproject/ +│ ├── __init__.py +│ ├── asgi.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +├── static/ +│ └── css/ +│ └── main.css # Custom CSS (from ./assets/css/main.css) +├── templates/ +│ ├── base.html # Base template with navbar +│ ├── index.html # Home page +│ ├── about.html # About page +│ ├── projects.html # Projects page +│ ├── apps.html # Apps page +│ ├── articles.html # Articles page +│ ├── contact.html # Contact page +│ ├── report_issue.html # Report an issue page +├── blog/ +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── tests.py +│ ├── urls.py # App-specific URLs +│ └── views.py # CBVs for all pages + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..00b6e5f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.9' + +services: + web: + build: . + volumes: + - .:/app + ports: + - "8000:8000" + environment: + - DEBUG=True + depends_on: + - db + + db: + image: postgres:15 + environment: + POSTGRES_USER: django + POSTGRES_PASSWORD: django + POSTGRES_DB: django_db + ports: + - "5432:5432" + diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..c0cc6b1 --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'portfolio.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/portfolio/__init__.py b/portfolio/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/portfolio/__pycache__/__init__.cpython-311.pyc b/portfolio/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e685554b29646a1bf268df7c75151e498825584f GIT binary patch literal 135 zcmZ3^%ge<81a7X4=^*+sh=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09tOG-bnpg_MM zzo;ZFKPNL^KR!M)FS8^*Uaz3?7l%!5eoARhs$CH)P$|f;Vtyd;ftit!@dE>lC}IYR F0RW*18%6*C literal 0 HcmV?d00001 diff --git a/portfolio/__pycache__/settings.cpython-311.pyc b/portfolio/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc1fef639fd428108396621efc12683e4810dbff GIT binary patch literal 2656 zcmb7G&u`jx6u0>e0YV5((zM-NwQ5Vdn50dcb(*p|;H0PoD28V9p_bwM4LCJ6wN2Cb zGIraf9d_FeJxo1pn)=UVQ>7uFBJH%xWU05F_G}jcmk2gBa>|p?;!~ffj!v!3rP@f;2B&$`$pXO z`xh9zIiA?_kJuBA4K<+wbR@Ec z6|9K{MpXTPx{h3{B@wkHh0+aCGlrVisjdz<)DU)+zD=*Jf%zuDwp9&Nk^&yuq9LgY z1-H?Xz^5eRPap&wX&FXG|16V1YD1?7PDUX#)OH3d89>Y!YDa45nNiG{0ld+|)NWUn zDOu7DO5HtKlc*qYge8r7A{~uo(-W_xFx3jTn((;u>qh)Rk(;z82Zge%g^i;op zRpFJA85KR^d9xqWAOt!f6BY4>M^ zWwjy7Emb$t0W&p#rW>kaXi}YaGi}aJ&UPV+3lo!$304f_po4XDenO~YU5C`47PLVi zHo;~FowKI4YxSQ3?~;cO4YdW_8@&@ zR`))z2w7@8+Y=klphM^{H#M=1OC6^Z^f9~mare<(P1eoK5XZpnjtmV**8u=4Xw)Bc z&h5qOP^?=?w*X!m0(4FT!csLo?K5vo!kpHk5w3Te=FKx`YWO+ykzw8%>K>P=lhY3% zJGnOROei1c@dE}US=wg>H<;`rwwSYgxqOAQLQJ_VxLmMQuI5Wc&Rjf6*}mSCXtC3Q zOuO4?1rgpAyRuYdx^fE8eiTlpeu z`HIXo&>F{9tWcTZxSdi3B70cks&FWjDpf53CxrQMVySMebwpj?S2ZNSDI_5`Ji4Z1 zjWL`S?;4ns+LA0fE%aodp=##(S&_CSMQV531*|lU)`|TWXSE-+R(TlX3BZH10u;M# ztVxa22!5It7gq0d@P{FGUMCPRuPtUdP8bL3#ywEmQgW1Zv_PbJ_CYa1v_xq z%2HkPLTas$AUKDSGY>nb$}g}L=)gIo7*=S5;aI0OtO&WK%Zf3D zLTQK13C><|Ry<$isxSo;P*9u|+0N&31$Kw2uvWBEDpiGArI0NZH?44$-7XiHD$7}k z9d0Y{=oj)?#;H9koMWntd7Xig^tmi+PS^VkIVd6$FW=Dcak4=n7 zFK#D8ahMnpFi8;!su#6GM2aQ*iDW;ua1^C%!ha<`M!dmP#12RO0h@4$Hy-o!!Zt;u zmJf*pc=yNq$(4TMLO-$4PhIRMQvJl79SbHv-yz?jeRhc!fqxx0r%a&T))klKF%5>#?I literal 0 HcmV?d00001 diff --git a/portfolio/__pycache__/urls.cpython-311.pyc b/portfolio/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..646520e47f4f8656c21cabe6187cb8888ebb134d GIT binary patch literal 1020 zcmb7D&x_MQ6rQAMcTL^hn|Sc>WDjkiCb+DZ;15K1aY01Xz4X#eGt)LDlL<3Zbv@Oa zM-L1B2a5R5tl&X%_2jLvw*|pBX(Ck+bTTu%8Qy&F`@Wfc*w}Chw*9@=;~zF5-^`+J zP8FOz#^4>Hq)(_t?bPCS-?mKLNE_VgI~K7CbEw1YX|p~&ZPn3x#QlV0*~V6XjW(YW zuNBR4(>;9h5Mq&ylJQJNIuRL+goIp3JrZdmAeUmwV(q)`vk8NvnN0IYYbG;w1Zko) zNHNn)0pcjo0-h)Ah4Nt^LAa0%k__?q5;;#p>QAcB^CJj_2M>Bc-klQ5ao8{TmCR zCrlb5e#y9|^8m5_hmFbiBQ-D}UGEP@2U(oXXp)W5gtDHIX70H5=b$tOkP2Rp$z@#+ zMwOM}(yrxo_{Q*>WR=@1P5EcG!&Hm|G_bDJF&iar$Mf9p=2d!D(TpfhG7KE!_^VdA z3?6yw#oAzi?_)41HY-Y~M9X9-8+fv4uke)ShbbJDXjV9ec+pnE z2VOoYKR-TSzsUuirR=uc#54c$wuqEsM literal 0 HcmV?d00001 diff --git a/portfolio/__pycache__/wsgi.cpython-311.pyc b/portfolio/__pycache__/wsgi.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fa780f8400a8de6e0f48675f44f037d13b16c49 GIT binary patch literal 661 zcmY*XL2DC16n?XtHoCPzip_Z_y##bu#gm92WE&!y9#Txw%g!{lJyr1L z5Af=#BK2}zOF5kS9exnYiAa~xmgP#U;)}^#yDTPptsJf zE;QCpemQTutu~FM7$h+r$ed;}*8|BDNwZvzFw(B$v^B*KnN+B#9wJ?&gq(-(Inq$k zkfxFya(uvXjGT_cJegmKFhxfD{V>aT5`{XEqTe_5_6$xcbEJtdkm>w_N@0p8iVhNv z_o+g3hFWLpspl~nDVL2x5z8f~NTwbN?}_`^8_FXsJ%$;V$0-W!9jQ3+oIho=odzlH z#i)bQ7p%}I>dlugI<5Vn>mMAnJFRZ;dcXPRm4C8z)4!`w>qNw=Q7x)LU`PZ(VM$fo zT~Ki&(}7zS&TRu#R8fqRT#CXmi3|tfA=kym3g&mXDmh)(J>&FlaOQm7?D+cDv&Abu z&ub>k{18y@jGEbmkeO8_l^K+33y5=iyBt$^H2Hr{!TRL=4.2,<5.0 +psycopg2-binary +