개요
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 로 접속한다.
'Container > Docker' 카테고리의 다른 글
podman 특정 유저로 실행 후 ssh 연결 종료 시 컨테이너 종료 (0) | 2025.03.17 |
---|---|
Amazon Linux Docker 설치 (0) | 2024.03.11 |