본문 바로가기
리눅스/Part1. Ch04. 웹 어플리케이션 컨테이너화

04. (실습) 앱 컨테이너화 - App 서버 구성

by Engineer-Lee 2022. 12. 6.
반응형

애플리케이션 계층 컨테이너화
- 어플리케이션 컨테이너 이미지를 구성

 

 

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

 

반응형