본문으로 바로가기

Django Web Docker 배포

category Container/Docker 2024. 5. 1. 15:06

개요

Django를 개발 후 ec2 서버에서 docker로 배포하는 방법을 설명합니다. Dockerfile을 작성해 docker image를 빌드한 후 배포한다.

Docker 배포

[ec2-user@ip-172-31-10-164 ~]$ git clone https://github.com/JangYeHoon/clone-coding.git
Cloning into 'clone-coding'...
remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (385/385), done.
remote: Compressing objects: 100% (255/255), done.
remote: Total 385 (delta 206), reused 287 (delta 108), pack-reused 0
Receiving objects: 100% (385/385), 762.48 KiB | 19.55 MiB/s, done.
Resolving deltas: 100% (206/206), done.
[ec2-user@ip-172-31-10-164 ~]$ ls            # cinerank로 폴더명 변경
cinerank
[ec2-user@ip-172-31-10-164 ~]$ cd cinerank/
[ec2-user@ip-172-31-10-164 cinerank]$ ls
config  manage.py  movies  requirements.txt  static  templates  users
[ec2-user@ip-172-31-10-164 cinerank]$ vi Dockerfile
[ec2-user@ip-172-31-10-164 cinerank]$ cat Dockerfile
FROM python:3.11.0

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
[ec2-user@ip-172-31-10-164 cinerank]$ docker build . -t django-cinerank
[+] Building 44.8s (10/10) FINISHED                                                                                                                                                            docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                     0.0s
 => => transferring dockerfile: 282B                                                                                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/python:3.11.0                                                                                                                                         2.2s
 => [internal] load .dockerignore                                                                                                                                                                        0.0s
 => => transferring context: 2B                                                                                                                                                                          0.0s
 => [1/5] FROM docker.io/library/python:3.11.0@sha256:55101c8373de5311b0ece8746251882ddb0bb394588c93d2477b88852ad00e72                                                                                  26.0s
 => => resolve docker.io/library/python:3.11.0@sha256:55101c8373de5311b0ece8746251882ddb0bb394588c93d2477b88852ad00e72                                                                                   0.0s
 => => sha256:2908ae31f385a4c15e9226e1030b63ea2fa91994428abadbfe3e7e373ac03067 2.22kB / 2.22kB                                                                                                           0.0s
 => => sha256:b9886e761095725d1a1a17007b037cf3a7df594140c54e3580a66608dfd77060 8.52kB / 8.52kB                                                                                                           0.0s
 => => sha256:f2f58072e9ed1aa1b0143341c5ee83815c00ce47548309fa240155067ab0e698 55.04MB / 55.04MB                                                                                                         1.3s
 => => sha256:55101c8373de5311b0ece8746251882ddb0bb394588c93d2477b88852ad00e72 2.14kB / 2.14kB                                                                                                           0.0s
 => => sha256:5c8cfbf51e6e6869f1af2a1e7067b07fd6733036a333c9d29f743b0285e26037 5.16MB / 5.16MB                                                                                                           0.7s
 => => sha256:aa3a609d15798d35c1484072876b7d22a316e98de6a097de33b9dade6a689cd1 10.88MB / 10.88MB                                                                                                         1.4s
 => => sha256:094e7d9bb04ebf214ea8dc5a488995449684104ae8ad9603bf061cac0d18eb54 54.59MB / 54.59MB                                                                                                         9.6s
 => => extracting sha256:f2f58072e9ed1aa1b0143341c5ee83815c00ce47548309fa240155067ab0e698                                                                                                                5.0s
 => => sha256:2cbfd734f3824a4390fe4be45f6a11a5543bca1023e4814d72460eaebc2eef89 196.87MB / 196.87MB                                                                                                       7.5s
 => => sha256:aa86ac293d0fa66515f0a670445969ba98dd8d6a114a7f6aea934aaad44084d0 6.29MB / 6.29MB                                                                                                           2.3s
 => => sha256:32d1faaefc303d530833ba7b47226a58beaea6ac5ba6164bc98d6156b7adb0c3 23.25MB / 23.25MB                                                                                                         4.4s
 => => sha256:2ccd92605074ba3b14ec8143b014397a9a66a4aeb134a91cdd37f6bed89ded21 233B / 233B                                                                                                               4.7s
 => => sha256:9a35eb2be5d427970e1e5eda31ebc0c4d825f76db8c21db79a018924f6f4fdc7 3.06MB / 3.06MB                                                                                                           5.2s
 => => extracting sha256:5c8cfbf51e6e6869f1af2a1e7067b07fd6733036a333c9d29f743b0285e26037                                                                                                                0.5s
 => => extracting sha256:aa3a609d15798d35c1484072876b7d22a316e98de6a097de33b9dade6a689cd1                                                                                                                0.6s
 => => extracting sha256:094e7d9bb04ebf214ea8dc5a488995449684104ae8ad9603bf061cac0d18eb54                                                                                                                3.3s
 => => extracting sha256:2cbfd734f3824a4390fe4be45f6a11a5543bca1023e4814d72460eaebc2eef89                                                                                                               10.3s
 => => extracting sha256:aa86ac293d0fa66515f0a670445969ba98dd8d6a114a7f6aea934aaad44084d0                                                                                                                0.4s
 => => extracting sha256:32d1faaefc303d530833ba7b47226a58beaea6ac5ba6164bc98d6156b7adb0c3                                                                                                                1.2s
 => => extracting sha256:2ccd92605074ba3b14ec8143b014397a9a66a4aeb134a91cdd37f6bed89ded21                                                                                                                0.0s
 => => extracting sha256:9a35eb2be5d427970e1e5eda31ebc0c4d825f76db8c21db79a018924f6f4fdc7                                                                                                                0.3s
 => [internal] load build context                                                                                                                                                                        0.1s
 => => transferring context: 176.33kB                                                                                                                                                                    0.0s
 => [2/5] WORKDIR /usr/src/app                                                                                                                                                                           0.3s
 => [3/5] COPY requirements.txt ./                                                                                                                                                                       0.1s
 => [4/5] RUN pip install -r requirements.txt                                                                                                                                                           14.7s
 => [5/5] COPY . .                                                                                                                                                                                       0.1s
 => exporting to image                                                                                                                                                                                   1.2s
 => => exporting layers                                                                                                                                                                                  1.2s
 => => writing image sha256:b7b595307f6275f10bef5a6c1d34781eb8f2d04eb0d25e1758f0b1298b07a18f                                                                                                             0.0s
 => => naming to docker.io/library/django-cinerank                                                                                                                                                       0.0s
[ec2-user@ip-172-31-10-164 cinerank]$ docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
django-cinerank   latest    b7b595307f62   6 seconds ago   1.01GB
[ec2-user@ip-172-31-10-164 cinerank]$ docker run --name cinerank -d -p 80:8000 django-cinerank
a90515d5733492194c4b6fb3b091e4d6634cef1558174cc7d756655455a7dd3c
[ec2-user@ip-172-31-10-164 cinerank]$ docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                                   NAMES
a90515d57334   django-cinerank   "python manage.py ru…"   4 seconds ago   Up 2 seconds   0.0.0.0:80->8000/tcp, :::80->8000/tcp   cinerank

server_ip:port 로 접속한다.