Docker Hub에 Docker 이미지를 빌드하고 게시하는 방법


편집자에 의한 이미지 | chatgpt
틀 소개
다른 컴퓨터, 팀원의 노트북, 테스트 서버 또는 클라우드에서 앱을 실행하려고 시도한 경우 투쟁을 알고있을 것입니다. 무언가가 항상 깨집니다. 패키지가 설치되지 않았거나 파이썬 버전이 꺼져 있거나 환경이 옳지 않을 수도 있습니다.
그것이 Docker가 인생을 편하게 만드는 곳입니다. Docker를 사용하면 전체 앱 코드, 종속성 및 환경을 어디에서나 동일하게 작동하는 깔끔한 작은 컨테이너에 묶을 수 있습니다. 해당 컨테이너를 Docker Hub에 게시하여 누구나 그것을 끌어 내고 즉시 실행할 수 있습니다.
이 안내서에서는 다음과 같은 방법을 살펴 보겠습니다.
- 간단한 파이썬 앱을 작성하십시오
- Docker 이미지를 작성하십시오
- 로컬로 테스트하십시오
- 공유 할 수 있도록 Docker Hub에 밀어 넣으십시오
틀 전제 조건
Python 앱을 Dockerizing에 포함시키기 전에 다음 설정이 있는지 확인하십시오.
- 설치된 파이썬 : Python이 컴퓨터에 설치되어 있는지 확인하십시오 (바람직하게는 Python 3.7+). 실행을 통해 이것을 확인할 수 있습니다.
python --version
또는python3 --version
- Docker 설치 및 실행 : 컴퓨터에 Docker를 설치하고 실행해야합니다. 아직 설치하지 않은 경우 다운로드하십시오 도커 데스크탑. 설치 후 Docker가 작동하는지 확인하십시오.
docker --version
- Docker Hub 계정 : 온라인에서 이미지를 게시하려면 무료 Docker Hub 계정이 필요합니다. 아직 없으면 여기에 가입하십시오. 도커 허브.
틀 1 단계 : 간단한 Python 앱을 만듭니다
Docker에 들어가기 전에 실제로 컨테이너화 할 것이 필요합니다. 따라서 매우 기본적인 Python 웹 앱을 사용하여 시작하겠습니다. 플라스크가벼운 웹 프레임 워크.
이 앱에는 인사하는 단일 경로가 있습니다. 이를 위해 Docker-Python-App이라는 폴더를 만들고 내부에 두 개의 파일을 만듭니다.
// 1. app.py
from flask import Flask
app = Flask(__name__)
@app.route("
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
이 코드에서 :
- 우리는 플라스크 앱을 만듭니다.
- 친근한 메시지를 반환하는 하나의 경로 (/)를 정의합니다.
- 우리는 호스트 “0.0.0.0”에서 앱을 실행하여 Docker가 컨테이너 외부에 노출 될 수 있습니다.
- 포트는 8000으로 설정됩니다.
// 2. requirements.txt
Docker는 앱이 필요한 Python 패키지를 알아야하므로 requirements.txt
파일:
틀 2 단계 : Dockerfile을 만듭니다
이제 Python 앱이 있으므로 Docker에게 구축 및 실행 방법을 가르쳐야합니다. 그것이 Dockerfile의 것입니다. 기본적으로 Docker에게 알려주는 레시피입니다.
“여기에 어떤 기본 이미지가 사용되는지, 종속성을 설치하는 방법은 다음과 같습니다. 여기에는 앱을 실행하는 방법이 있습니다.”
프로젝트 폴더 (Docker-Python-App)에서 DockerFile (파일 확장자 없음)이라는 파일을 만듭니다.
# 1. Start with a lightweight Python base image
FROM python:3.11-slim
# 2. Set the working directory in the container
WORKDIR /app
# 3. Copy the dependency file and install packages
COPY requirements.txt .
RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt
# 4. Copy the rest of your app code
COPY . .
# 5. Tell Docker which port the app will use
EXPOSE 8000
# 6. Define the command to run your app
CMD ["python", "app.py"]
이 파일은 기본적으로 :
- 작은 공식 파이썬 이미지를 사용합니다
- 앱의 종속성을 설치합니다
- 컨테이너 안에 코드를 복사합니다
- 실행
app.py
컨테이너가 시작될 때
앱을 컨테이너화하는 데 필요한 전부입니다. 이제 구축합시다.
틀 3 단계 : Docker 이미지를 작성하십시오
프로젝트 디렉토리 내부의 터미널에서 실행 :
docker build -t your_dockerhub_username/docker-python-app .
교체하는 것을 잊지 마십시오 your_dockerhub_username
실제 사용자 이름으로. 이 명령에서 :
docker build
Docker에게 이미지를 만들도록 지시합니다-t
나중에 참조하기 쉽게 이미지 태그 (이름) 태그가 있습니다..
Docker에게 현재 디렉토리를 사용하도록 지시합니다 (Dockerfile이 살고있는 곳)
1 분 정도 후에 Docker는 앱을 이미지로 패키지합니다. 터미널에서 무언가를 볼 수 있습니다.
틀 4 단계 : 이미지를 로컬로 실행하고 테스트하십시오
게시하기 전에 실제로 작동하는지 확인합시다.
이 명령 실행 :
docker run -p 8000:8000 your_dockerhub_username/docker-python-app
이 명령은 Docker에게 다음과 같이 말합니다.
- “컨테이너 실행”
- 로컬 머신의 포트 8000을 컨테이너 내부에서 포트 8000 (플라스크가 작동하는 곳)
터미널에서 무언가를 볼 수 있습니다.
이제 브라우저를 열고 가십시오 . 당신은 볼 수 있어야합니다 :
당신이 그것을 보면, 당신의 이미지는 예상대로 정확하게 작동합니다.
틀 5 단계 : Docker 이미지를 Docker Hub로 누릅니다
이제 명령을 사용하여 이미지를 Docker Hub 저장소로 푸시하십시오.
docker push your_dockerhub_username/docker-python-app
프롬프트되면 먼저 인증하십시오 docker login
Docker Hub 자격 증명 사용.
틀 6 단계 : 어디서나 당기고 달려갑니다
누구나 다음을 사용하여 Docker 이미지를 가져올 수 있습니다.
docker pull image_owner_username/docker-python-app
그만큼 john123
그리고이 이미지를 가져오고 싶다면 다음을 입력 할 것입니다.
docker pull kanwal5119/docker-python-app
왜냐하면 kanwal5119
이미지를 소유하고 이미지를 잡아 당기고 실행할 수 있으며 액세스 할 수없는 한 수정하거나 푸시하지 마십시오.
명령을 사용하여 실행합니다.
docker run -p 8000:8000 image_owner_username/docker-python-app
출력을 위해 이동하십시오 또는
틀 결론
이 기사에서는 파이썬 앱을 만들고 Docker를 사용하여 컨테이너 화하고 로컬로 테스트 한 다음 Docker Hub로 푸시하여 휴대용, 공유 가능하며 어디에서나 달릴 준비가되었습니다. 이를 통해 개발 워크 플로우가 더 깨끗하고 확장 가능합니다. 더 나아가고 싶다면 시도해보십시오.
- 이미지에 v1.0과 같은 버전 태그 추가.
- a
.dockerignore
빌드를 최적화하려면 파일. - GitHub + Docker Hub로 자동 빌드를 설정합니다.
- 클라우드 플랫폼 (AWS, GCP 또는 Azure)에서 이미지를 실행합니다.
Docker와 함께 할 수있는 일이 더 많지만 이제는 기본 사항이 잠겨 있습니다. 어느 시점에 갇히거나 질문이 있으면 아래에 의견을 남겨주세요.
Kanwal Mehreen 기계 학습 엔지니어이자 데이터 과학에 대한 열정과 AI의 의학 교차점을 가진 기술 작가입니다. 그녀는 eBook “Chatgpt의 생산성을 극대화하는 것”을 공동 저술했습니다. APAC의 Google Generation Scholar 2022로서 그녀는 다양성과 학업 우수성을 챔피언시킵니다. 그녀는 또한 Tech Scholar, Mitacs Globalink Research Scholar 및 Harvard Wecode Scholar의 Teradata 다양성으로 인정 받고 있습니다. Kanwal은 STEM 분야의 여성에게 힘을 실어주기 위해 펨코드를 설립 한 변화에 대한 열렬한 옹호자입니다.
Post Comment