학습주제
학습내용
LABEL -> docker inspect로 확인 가능
LABEL 키,벨류 포맷으로 작성함. 포맷이 정해져 있진 않음.
FROM python:3.8-slim-buster
LABEL Maintainer="kjw9684k@gmail.com"
WORKDIR /app
COPY app.py ./
COPY requirements.txt ./
RUN pip3 install -r requirements.txt
EXPOSE 4000
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0", "--port=4000"]
CMD 파이썬 리스트 형태로 적어줄 수 있음. 최종적으론 공백문자 형태의 스트링으로 실행될 것임.
expose 4000. 컨테이너 실행시 4000번 포트를 쓰고 있다는걸 알림. 동작엔 영향이 없음. 사람에게 알려주는 역할임.
WORKDIR를 /app 했기 때문에 목적지쪽은 기본 app 폴더로 고정됨.
LABEL, EXPOSE는 부가정보임. 실제 실행에 연관 X
docker build -t kjw9684k/hangman_web .
docker image ls
어떤 내용이 있는지 inspect 사용해본다
docker inspect kjw9684k/hangman_web
들어가있음.
전체적인 메타데이터들이 보이는거 같음.
포트 매핑을 하지 않고 돌려봄
컨테이너 안에서만 열린거지, 바깥과 연결되지 않음
docker run -p 4000:4000 kjw9684k/hangman_web
docker ps를 보고
이 컨테이너 아이디를 복사해서 지워보자.
docker stop 컨테이너ID
혹은 UI에서 멈출 수도 있음
docker run -p 4000:4000 kjw9684k/hangman_web
이렇게 하면 컨테이너가 끝날때까지 기다린다 어떨때는 번거로움. detatch
-d
를 주면 백그라운드에서 돌게됨
바로 끝난것처럼 뜸
docker ps를 해보면
컨테이너 단에 올라온 걸을 볼 수 있음.
만들었던 이미지를 도커 허브로 push 해본다
이미 숙제 제출로 만들어봤지만, 이번엔 리포를 만들지 않고 push를 바로 해본다.
정상적으로 push 됨.
새로고침을 하면 리포가 생성된 것을 볼 수 있다.
도커 랩스에서 이 리포를 받고 실행시켜본다.
docker run -p 4000:4000 kjw9684k/hangman_web
포트 매핑을 했기 때문에
링크를 누르거나 포트를 열면 정상적으로 웹페이지가 뜬다.