Docker

Humbler·2020년 3월 22일
0

  1. docker 를 Mac에 설치하자.
    ㅡ> 그냥 site 들어가서 설치하면 된다.

  2. docker를 깔고 나면 터미널에서 쓸 수 있는 아래와 같은 명령어들이 있다.

    docker

    docker ps
    #(실행중인 컨테이너를 보여주는 커맨드)
    docker ps -a
    #(실행이 종료된 것을 포함해서 모든 컨테이너를 보는 커맨드 및 옵션)
    docker images
    #(생성된 혹은 다운로드 된 이미지를 보여주는 커맨드)
    docker images -a
    #(모든 이미지를 보여주는 커맨드 및 옵션)

  3. docker image를 생성하기 위해 Dockerfile을 만들자.
    단 이 때 dockerfile은 manage.py가 있는 곳에 만들어야 한다.

    #./Dockerfile
    FROM python:3 #기반이 될 이미지
    
    WORKDIR /usr/src/app # 작업디렉토리(default)설정
    #Install packages
    COPY requirements.txt ./ #현재 패키지 설치 정보를 도커 이미지에 복사
    RUN pip install -r requirements.txt #설치정보를 읽어 들여서 패키지를 설치
    #Copy all src files
    COPY . . #현재경로에 존재하는 모든 소스파일을 이미지에 복사
    #Run the application on the port 8080
    EXPOSE 8000   #8000번 포트를 외부에 개방하도록 설정
    #CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"]
    CMD ["gunicorn", "--bind", "0.0.0.0:8000", "example.wsgi:application"] #gunicorn을 사용해서 서버를 실행

    아 그리고 dockerfile에서 제일 아래에 example을 내 프로젝트 디렉토리명인 'wezard-backend'로 바꿔줘야 한다.
    있던 주석들도 다 지워준다.
  1. 도커파일을 이용해 이미지 빌드하기

    docker build -t '도커허브에 가입한 계정명'/'이미지명(프로젝트명 권장)':'버전' .
    ex) docker build -t wecode/wecodeproject:0.1.0 .

  2. 빌드된 이미지를 실행해보기

    docker run --name '컨테이너 명' -d'데몬으로 실행하기 위한 옵션' -p '호스트 포트':'컨테이너 포트' '이미지명'
    ex) docker run --name wecode01 -d -p 8000:8000 wecode/wecodeproject:0.1.0

    나는 5번에서 계속 이런 error가 났다.

    이유인 즉슨, requirements.txt에 gunicorn이 설치가 안되어있었기 때문이다. 그래서 가상환경에 gunicorn을 설치하고 pip freeze > requirements.txt 를 재실행 한뒤 이미지 빌드부터 다시해보니 성공적으로 아래와 같이 떳다.

  3. 5번이 성공적으로 된다면 EC2에 배포를 해야겠지.

    docker login 

    을 터미널에서 실행한다.

    docker push hyeongjunk05/wezard0101:0.1.0

    을 실행해서 docker hub repo에 올려준다.

  4. docker hub repo에 들어가보면 생성되어 있다.

이젠 EC2를 만들고 거기에 docker 설치하고 pull 하고 run하면 프로젝트 복붙이 끝나게 된다.

ps1. 이미지 전부 삭제하는 명령어

docker rmi $(docker images -q)

ps2. 컨테이너 전부 삭제하는 명령어

docker rm $(docker ps -a -q)

https://stackoverflow.com/c/wecode/questions/271

https://stackoverflow.com/c/wecode/questions/275

https://stackoverflow.com/c/wecode/questions/273

https://www.notion.so/Docker-3a4c41688cd749659a572e8aa4fa3f76

profile
무엇을 모르는지 모르는 상태에서 무엇을 모르는지 아는 상태가 되어가는.

0개의 댓글