lll
This commit is contained in:
commit
4231a95fdb
5 changed files with 178 additions and 0 deletions
44
README.md
Normal file
44
README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
# What is it?
|
||||
|
||||
This is just a small Vue.js demo app with a Django Rest API Backend that writes "Todos" to a Postgesql DB.
|
||||
It serves as demo to on how to setup the containerization with docker.
|
||||
|
||||
# How to use/deploy
|
||||
## Simple Way
|
||||
|
||||
Clone the 3 repos into the folder:
|
||||
|
||||
* ```mkdir TestProject && cd TestProject```
|
||||
* ```git clone ssh://git@git.impstyle.com:222/test/demo-docker.git docker```
|
||||
* ```git clone ssh://git@git.impstyle.com:222/test/demo-fronted.git frontend```
|
||||
* ```git clone ssh://git@git.impstyle.com:222/test/demo-backend.git backend```
|
||||
git submodule add git@git.impstyle.com:222/test/demo-frontend.git frontend
|
||||
git submodule add git@git.impstyle.com:222/test/demo-backend.git backend
|
||||
|
||||
## SSH git clone via docker compose
|
||||
Have a valid ssh key pair with the Git server provider.
|
||||
|
||||
adjust the path to the frontend and backend repos inside `docker-compose_ssh_git.yml`
|
||||
|
||||
|
||||
run ```docker compose build -f docker-compose_ssh_git.yml --ssh default```
|
||||
|
||||
this path is tricky because you have to do more to make the ssh keys working with the docker compose instance.
|
||||
|
||||
## how to start the application
|
||||
Adjust the .env files.
|
||||
|
||||
|
||||
run: ```docker compose up --build```
|
||||
|
||||
|
||||
run: ```docker-compose exec backend python manage.py createsuperuser``` and create a user in the backend.
|
||||
|
||||
the frontend runs on http://localhost:5173
|
||||
|
||||
|
||||
### local dev:
|
||||
enables live updates of the code during development, no rebuild needed:
|
||||
|
||||
|
||||
```docker-compose -f docker-compose.yml -f docker-compose.override.yml up```
|
40
build_and_run.sh
Executable file
40
build_and_run.sh
Executable file
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Build images
|
||||
docker build -t demo-frontend ../frontend
|
||||
docker build -t demo-backend ../backend
|
||||
|
||||
# Create network if it doesn't exist
|
||||
docker network create demo-network || true
|
||||
|
||||
# Start PostgreSQL
|
||||
docker run -d \
|
||||
--name demo-db \
|
||||
--network demo-network \
|
||||
-e POSTGRES_DB=todo_db \
|
||||
-e POSTGRES_USER=postgres \
|
||||
-e POSTGRES_PASSWORD=postgres \
|
||||
-p 5432:5432 \
|
||||
-v postgres_data:/var/lib/postgresql/data \
|
||||
postgres:13
|
||||
|
||||
# Start Backend
|
||||
docker run -d \
|
||||
--name demo-backend \
|
||||
--network demo-network \
|
||||
-e DB_NAME=todo_db \
|
||||
-e DB_USER=postgres \
|
||||
-e DB_PASSWORD=postgres \
|
||||
-e DB_HOST=demo-db \
|
||||
-e DB_PORT=5432 \
|
||||
-e DEBUG=1 \
|
||||
-p 8000:8000 \
|
||||
demo-backend
|
||||
|
||||
# Start Frontend
|
||||
docker run -d \
|
||||
--name demo-frontend \
|
||||
--network demo-network \
|
||||
-e VITE_API_URL=http://localhost:8000/api \
|
||||
-p 5173:5173 \
|
||||
demo-frontend
|
8
docker-compose.override.yml
Normal file
8
docker-compose.override.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
services:
|
||||
backend:
|
||||
volumes:
|
||||
- /path/to/local/backend:/app
|
||||
|
||||
frontend:
|
||||
volumes:
|
||||
- /path/to/local/frontend:/app
|
45
docker-compose.yml
Normal file
45
docker-compose.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
services:
|
||||
db:
|
||||
image: postgres:13
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=todo_db
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=postgres
|
||||
ports:
|
||||
- "5432:5432"
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: ${PWD}/../backend/
|
||||
# dockerfile: Dockerfile
|
||||
# entrypoint: ["${PWD}/../backend/entrypoint.sh"]
|
||||
command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- DB_NAME=todo_db
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_HOST=db
|
||||
- DB_PORT=5432
|
||||
- DEBUG=1
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ${PWD}/../frontend
|
||||
# dockerfile: Dockerfile
|
||||
# entrypoint: ["${PWD}/../frontend/entrypoint.sh"]
|
||||
command: sh -c "npm run dev -- --host 0.0.0.0"
|
||||
ports:
|
||||
- "5173:5173"
|
||||
environment:
|
||||
- VITE_API_URL=http://localhost:8000/api
|
||||
depends_on:
|
||||
- backend
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
41
docker-compose_ssh_git.yml
Normal file
41
docker-compose_ssh_git.yml
Normal file
|
@ -0,0 +1,41 @@
|
|||
services:
|
||||
db:
|
||||
image: postgres:13
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_DB=todo_db
|
||||
- POSTGRES_USER=postgres
|
||||
- POSTGRES_PASSWORD=postgres
|
||||
ports:
|
||||
- "5432:5432"
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: ssh://git@git.impstyle.com:222/test/demo-backend.git#main # Replace with your backend repo URL
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- DB_NAME=todo_db
|
||||
- DB_USER=postgres
|
||||
- DB_PASSWORD=postgres
|
||||
- DB_HOST=db
|
||||
- DB_PORT=5432
|
||||
- DEBUG=1
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ssh://git@git.impstyle.com:222/test/demo-frontend.git#main # Replace with your frontend repo URL
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "5173:5173"
|
||||
environment:
|
||||
- VITE_API_URL=http://localhost:8000/api
|
||||
depends_on:
|
||||
- backend
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
Loading…
Reference in a new issue