[Docker] local 환경에서 docker 설치 및 django 컨테이너 구성

최동혁·2023년 4월 18일
0

docker

목록 보기
3/5

Pycharm 설정

  • Ctrl + Alt + s를 눌러서 설정으로 들어간다.
  • Build~~ -> Docker -> + 버튼을 누르면 Docker가 생성된다.
  • TCP socket 체크
  • URL을 우리가 컨테이너를 실행할 ip 주소를 쓴다.
    • 필자는 Vm ware 가상 머신을 사용하기 때문에 가상 머신의 사설 ip를 적었다.
    • 포트번호는 2375이다.
  • 온프레미스에서 vi /usr/lib/systemd/system/docker.service로 이동한다.
  • 여기서 ExecStart 쪽을 고쳐야한다.

  • 원격에서 이 파일 접근해서 사용할 수 있게 해주는 설정이다.
  • pycharm에 적었던 대로 tcp 프로토콜을 써주고 0.0.0.0:2375로 고쳐준다.
  • docker service 설정이 바뀐것이다.
  • 이런 서비스 설정이 바뀌면 systemctl daemon-reload를 해줘야 설정이 적용된다.
  • 그 후, systemctl restart docker로 재시작을 해준다.
  • docker는 방화벽을 끄면 docker가 실행이 안된다.
    • 그렇기에 다른 사람들이 원격으로 접속할 수 있게 방화벽을 허용해줘야 한다.
    • firewall-cmd --permanent --add-port=2375/tcp
    • 2375 tcp 프로토콜 통신을 허용해주는 것이다.
    • firewall-cmd --reload로 설정을 적용해준다.
    • 위에처럼 success가 떠야한다. 만약 이미 허용을 해줬으면 이미 사용가능하다고 빨간색으로 나올것이다.

  • 이렇게 해놓고 pycharm 가장 밑에 services를 누르면 위의 그림처럼 Docker가 나오고, 내가 온프레미스 혹은 public 클라우드에서 생성한 이미지와 실행 중이거나 실행이 되었던 컨테이너들이 나올것이다.

Docker 설치

  • 이렇게 pycharm에서 원격 접속해서 사용하기도 하는데, 실무에서 window 환경이라면 이런식으로 안한다.
  • 거의 맥북으로 진행하기도 하고, window 경우 docker 프로그램을 설치해서 사용한다.
  • 공식 홈페이지 들어가서 window 버전을 설치하자.
  • window 10 home 버전 밑은 아무것도 안뜨고 바로 설치를 할 수 있다.
  • pro 버전 부터는 hyper v 활성화 할 거냐고 물어보는데 둘다 체크하면 된다.
  • 재시작을 한다.

  • 이런 창이 나오면
  • wsl --update를 하고 재시작하면 된다.
  • 필자는 에러가 나와서 virtual network 53번 포트 포트포워딩을 해제했다.

pycharm 설정

  • 아까 설정해놓은곳에서 Docker for Windows로 바꾼다.
  • 그리고 cmd 창에 가서
  • docker run --name my-mysql -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwer1234 -p 3306:3306 -d mysql:8.0.32-debian
  • 명령어를 이용해 이미지를 가져오자.

  • 그러면 이런식으로 mysql 이미지를 불러온 것을 확인할 수 있다.

django 설정

  • settings.py에 들어가서 db 연결 설정을 바꿔줘야한다.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'PASSWORD': 'qwer1234',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}
  • 그리고 위에서 설정한대로 스키마를 만들어야한다. 필자는 test라는 이름의 데이터베이스를 만들겠다.

  • mysql workbanch를 실행시켜서 본인의 ip로 접속 후, 쿼리문을 CREATE DATABASE test; 로 실행시킨다.

  • test라는 스키마가 만들어진 것을 확인할 수 있다.

Dockerfile

FROM python:3.9
ENV PYTHONUNBUFFERED 1
WORKDIR /app
copy requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
RUN python manage.py migrate
CMD gunicorn config.wsgi --bind 0.0.0.0:8000

settings.py

  • 위에걸 추가시켜야 다른 ip가 접속이 가능하다.

port 확인

  • cmd 창을 켜서 3306 port가 다른 걸로 실행되고 있는지 확인해보자
  • netstat -ano | findstr :3306

  • 필자는 7000번의 pid로 실행이 되고 있었다.

  • 작업관리자를 켜서 7000번의 pid를 가진 프로세스를 찾는다.

  • mysql 프로그램이 켜져있었다.

  • 윈도우 창에 검색으로 서비스를 검색한다.

  • 그리고 mysql을 찾는다.
  • 오른쪽 마우스로 클릭해서 중지를 누른다.

실행

  • 실행을 하면

  • build log는 이런식으로 성공했다고 나오고,

  • 그냥 log는 이런식으로 나온다.
  • 그런데 접속이 안된다면, Dashboard로 들어가보자

  • 밑으로 내려서 port쪽에 위의 그림처럼 안되어있으면 추가를 시켜야한다.

  • 왼쪽 밑에 Modify options를 눌러서 Host IP와 Host port를 클릭하자.
  • 그리고 Host ip는 모든 사람을 허용할 것이기 때문에 0.0.0.0을 입력하고, port는 8000번으로 해준다.
  • 그리고 포트포워딩을 8000번 포트로 해준다.
  • 그렇게 되면 가상 환경에 8000번 포트로 연결을 해주는 것이다.
  • 그리고 다시 접속하면 될 것이다.
  • 물론 gunicorn으로 서버를 열면 static 폴더와 media 폴더 경로를 재설정 해줘야 하기 때문에, css가 깨져서 보일 것이다. 이건 나중에 하도록 하겠다.

  • 아 그리고 dockerfile의 오른쪽 마우스를 클릭하고 Modify Run Configuration을 하면

  • 실행시킬 containger의 이름을 설정할 수 있다.
  • 만약 이걸 설정 안해놓고 Dockerfile을 실행하면 컨테이너 이름이 랜덤으로 부여된다.

  • 또한 이미지 태그도 바꿔줘야 한다. 안그러면 위의 그림처럼 이상한 이름으로 이미지가 추가된다.
  • 보통 이미지 태그는 버전을 쓴다.
  • 필자는 처음이기 때문에 django:1.0으로 쓸것이다.

결과

  • 위의 그림처럼 컨테이너가 2개 실행되는 것을 볼 수 있다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글