애플리케이션 계층 컨테이너화
- 어플리케이션 컨테이너 이미지를 구성
1. Dockerfile 작성
"""
FROM python:3.8-slim-buster
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
RUN apt-get update \
&& apt-get install -y gcc libpq-dev python-dev \
&& rm -rf /var/lib/apt/lists/*
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"]
"""
2. Docker 이미지 빌드
docker build --tag poll_app .
3. 빌드된 이미지 실행
docker run --rm --name poll poll_app
4. 오류 메시지 확인
"""
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
"""
컨테이너로 구성된 앱을 실행했을때 이처럼 127.0.0.1에서 DB를 찾을수 없다고 나오고
그 이유는 앱 서버는 별도의 컨테이너에서 실행되기에 DB는 별도의 공간에서 실행되고있다.
5. 로컬 호스트 IP 확인
ip address show eth0
6. Django config에 Database 호스트 정보 수정하기 (환경변수로 빼는 작업은 추후 진행)
projects/Django-Poll-App/pollme/settings.py
7. Docker 이미지 빌드
docker build --tag poll_app .
8. 빌드된 이미지 실행
docker run --rm --name poll poll_app
9. 브라우저로 접속 여부 확인 --> 접속 실패
10. 열린 포트 정보 확인
sudo ss -tulpn
8000번 포트가 열리지 않았고
그 이유는 도커 명령을 실행할때 8000번 포트 설정을 안했기 때문이다.
11. 빌드된 이미지 실행
docker run -p 8000:8000 --rm --name poll poll_app
'리눅스 > Part1. Ch04. 웹 어플리케이션 컨테이너화' 카테고리의 다른 글
06. (실습) 앱 컨테이너화 - 디버깅 환경 구성 (0) | 2022.12.07 |
---|---|
05. (실습) 앱 컨테이너화 – docker-compose (추가, 수정 필요) (0) | 2022.06.28 |
05. (실습) 앱 컨테이너화 - Web 서버 구성 (0) | 2022.06.28 |
03. (실습) 앱 컨테이너화 - DB 서버 구성 (0) | 2022.06.28 |
02. Docker 기본명령 소개 (0) | 2022.06.28 |