Skip to content

Instantly share code, notes, and snippets.

@rg3915
Last active November 5, 2022 00:24
Show Gist options
  • Select an option

  • Save rg3915/c8dddfd6aad03adf9a8f2c5bf3e7dd71 to your computer and use it in GitHub Desktop.

Select an option

Save rg3915/c8dddfd6aad03adf9a8f2c5bf3e7dd71 to your computer and use it in GitHub Desktop.
Dockerfile and docker compose example to deploy Django application

Docker and Django on AWS (EC2)

curl -fsSL https://get.docker.com/ | bash

ou

sudo apt install docker.io

Instalar o Docker e docker compose no servidor Linux

https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-18-04-pt

Criar pastas

mkdir -p config/{app,nginx}
touch config/nginx/app.conf
touch Dockerfile
touch docker-compose.yml

Criando a imagem

docker build -t djdocker .

Subindo o docker-compose

sudo docker-compose up --build

Criar instância na EC2

Clonar o projeto dentro do servidor

Editar o .env

sudo vim .env

Instalar docker e docker-compose no servidor

https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-18-04-pt

Rodar este comando novamente

sudo docker-compose up --build

Editar security group na EC2

HTTP | TCP | 80 | 0.0.0.0/0, ::/0

Build final

sudo docker-compose up --build -d

Executando um comando dentro do docker

sudo docker ps
sudo docker exec -it CONTAINER_NAME bash
# https://docs.docker.com/compose/django/
version: '3.7'
services:
# containers
app:
image: djdocker
# build:
# context: .
# dockerfile: Dockerfile
hostname: app
expose:
- "8000"
command: gunicorn --reload myproject.wsgi:application -b 0.0.0.0:8000
nginx:
image: nginx
hostname: nginx
ports:
- "80:8000"
volumes:
- ./myproject/config/nginx:/etc/nginx/conf.d
depends_on:
- app
# Creating image based on official Python3 image
FROM python:3.7-slim
# Sets dumping log messages directly to stream instead of buffering
ENV PYTHONUNBUFFERED 1
WORKDIR app/
ADD . .
# Install all Python dependencies
RUN pip install -r requirements.txt
# Open port 8000
EXPOSE 8000
RUN rm -rf .venv && mkdir static
RUN python manage.py collectstatic --noinput
RUN python manage.py migrate
CMD gunicorn --reload myproject.wsgi:application -b 0.0.0.0:8000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment