Docker 시리즈(10부): 나만의 Dockerfile 생성 및 컨테이너 생성

6792 단어
이 블로그에서는 이 과정을 살펴보겠습니다.

Dockerfile이라는 파일을 만들고 터미널에서 엽니다. 우리는 그것을 편집하기 위해 vim을 사용하고 있습니다.



1. 먼저 노드 18-alpine을 가져옵니다.
여기에서 최신 버전의 노드를 볼 수 있습니다: https://hub.docker.com/_/node





따라서 노드 이미지를 가져오고 18-alpine 태그를 지정해 보겠습니다. 알파인은 매우 가벼운 분포입니다.


  • 이 앱에 대해 포트 3000을 노출합니다. 지시로 한다
  • 이제 alpine 패키지 관리를 사용하여 설치합니다.

  • RUN apk add --uppdate tini
    

    또한 다음을 사용하여 usr/src/app를 복사할 디렉토리를 생성합니다.

    RUN mkdir -p usr/src/app
    


    그런 다음 다음을 사용하여 들어갑니다.

    WORKDIR usr/src/app
    


    4.Node는 패키지 관리자를 사용하므로 package.json 파일을 생성하여 package.json 파일에 복사합니다.

    그런 다음 다음을 사용하여 종속성을 설치합니다.

    RUN npm install
    


    또한 우리는 그것을 작고 깨끗하게 유지할 것입니다.

    RUN npm cache clean
    


    또는 짧은 사용

    RUN npm install && npm cache clean
    


  • 그런 다음 다음을 사용하여 현재 노드:18-alpine에서 모든 항목을 복사합니다.

  • COPY ..
    


  • 이제 'tini -- node ./bin/www'를 사용하여 컨테이너를 시작해야 합니다
  • .

    우리는 이것을 추가하기 위해 json 형식을 사용할 것입니다.

    CMD ["tini","--","node","./bin/www"]
    




    이제 이 파일을 저장하고 터미널로 이동합니다. 이 명령을 사용하여 dockerfile을 빌드합니다.

    docker build -t <random image name you wish> .
    


    "."현재 디렉토리에 빌드하도록 지정됩니다.



    약간의 문제가 있습니다


    무슨 일이에요?

    이미지를 보자



    태그가 있는 이미지를 볼 수 있습니다.
    문제가 발생하면서 이 문제에 직면했습니다. docker 파일을 간단히 변경하여 이 문제를 해결할 것입니다.

    RUN npm install && npm cache clean --force
    


    이 줄을 강제로 구현하고 의심을 없애기 위해 이제 "testimage"라는 새 이름으로 새 이미지를 만듭니다.



    이번에는 완벽하게 작동했고 최신 태그를 추가했습니다.

    자, 이미지를 봐



    최신 태그로 이미지를 맨 위에 볼 수 있습니다.

    그래서 이미지가 생성됩니다! 축하합니다!

    이제 이 이미지를 사용하여 컨테이너를 만들어 보겠습니다.

    docker container run -rm -p 80:3000 --name test_container testimage
    


    -rm은 컨테이너를 종료하는 순간까지 컨테이너를 중지하려는 경우에 사용됩니다.

    -p 80:3000은 80에서 실행되지만 3000에서 수신하기 때문에 사용됩니다. 또한 Dockerfile에 3000개를 노출했습니다.

    또한 컨테이너에 컨테이너 이름을 설정하고 이미지 "testimage"를 사용했습니다.



    이제 웹 브라우저로 이동하여 "localhost"를 입력하면 다음을 볼 수 있습니다.



    터미널로 이동하면 이 로그가 표시됩니다.


    이제 Ctrl + C를 눌러 중지하십시오.

    이제 이 이미지를 새 이름으로 Dockerhub ID에 업로드할 수 있습니다.

    docker tag testimage <dockerhub username/new image name>
    




    자, 밀어보자
    사용

    docker push <docker hub username/image name>
    




    dockerhub로 이동하여 거기에서 이미지를 확인하십시오.



    축하합니다! 당신은 그것을 완료했습니다


    막히면 최종 Dockerfile을 볼 수 있습니다.

    From node:18-alpine
    
    
    EXPOSE 3000
    
    RUN apk add --update tini
    
    RUN mkdir -p /usr/src/app
    
    WORKDIR /usr/src/app
    
    COPY package.json package.json
    
    RUN npm install && npm cache clean --force
    COPY . .
    
    CMD ["tini","--","node","./bin/www"]
    
    
    
    


    또 보자

    좋은 웹페이지 즐겨찾기