https://github.com/kundanchourasiya/django-notes-app-docker-testing
https://github.com/kundanchourasiya/django-notes-app-docker-testing
django docker-compose docker-multi-stage-build dockerfile mysql nginx python3
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/kundanchourasiya/django-notes-app-docker-testing
- Owner: KundanChourasiya
- Created: 2025-05-05T12:06:23.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-06T18:05:18.000Z (about 1 year ago)
- Last Synced: 2025-05-07T09:56:44.393Z (about 1 year ago)
- Topics: django, docker-compose, docker-multi-stage-build, dockerfile, mysql, nginx, python3
- Language: JavaScript
- Homepage:
- Size: 1.61 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# django-notes-app-docker-testing

### Dockerfile
```properties
FROM python:3.9
WORKDIR /app/backend
COPY requirements.txt /app/backend
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y gcc default-libmysqlclient-dev pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Install app dependencies
RUN pip install mysqlclient
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app/backend
EXPOSE 8000
#RUN python manage.py migrate
#RUN python manage.py makemigrations
```
### docker-compose file
```properties
version: "3.8"
services:
nginx:
container_name: "nginx_cont"
build:
context: ./nginx
image: nginx
ports:
- "80:80"
networks:
- django-network
restart: always
depends_on:
- django
django:
container_name: "django_cont"
build:
context: .
ports:
- "8000:8000"
env_file:
- ".env"
depends_on:
- mysql
networks:
- django-network
command: sh -c "python manage.py migrate --noinput && gunicorn notesapp.wsgi --bind 0.0.0.0:8000"
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/admin || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
mysql:
container_name: "db_cont"
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test_db
volumes:
- ./mysql-django:/var/lib/mysql
networks:
- django-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot"]
interval: 10s
timeout: 5s
retries: 5
start_period: 60s
volumes:
mysql-django:
networks:
django-network:
```
### nginx docker file
```properties
FROM nginx:1.23.3-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
```
### nginx/default.conf file
```properties
# conatiner_name
upstream django{
server django_app:8000;
}
server {
listen 80;
#(xyz.com)
server_name localhost;
#server_name xyz.com;
location / {
proxy_pass http://django_cont:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```