Docker를 사용하여 로컬 개발


Pixabay, Pexels에 촬영
Docker/Containers는 이미 응용 프로그램을 구축하고 배치하는 사실의 표준이 되었다.용기의 격리성, 이식 가능성, 확장성이 응용 프로그램 배치의 핫이슈로 떠올랐다.
그러나 용기는 응용 프로그램 배치뿐만 아니라 로컬 개발에도 사용된다.그것들은 많은 개발자들의 문제를 해결할 수 있다.Docker 컨테이너를 개발하는 동안 사용할 수 있는 이점은 다음과 같습니다.
  • 내 시스템에서 작동 = 어디서나 작동
  • 구성/버전 불일치 없음
  • 개발 환경이 생산에 가깝다
  • 신규 개발자의 손쉬운 입사
  • 내가 어떻게 Docker를 이용해서 이 블로그를 개발했는지 봅시다.

    기본 이미지


    OverEngineeredBlog는 next 위에 세워져 있습니다.js는 노드가 필요합니다.이 밖에 포장 매니저의 선택은 실이다.docker hub의 공식 노드 이미지는 here입니다.그것도 실을 포함한다.본 블로그는 node:lts의 사진을 사용하여 node의 최신lts버전을 얻습니다.

    Docker Compose


    docker compose를 만들었습니다.yml 파일, 전체 용기 설정을 정의하고 필요할 때 더 많은 용기를 추가합니다.

    docker 작성.야마하 View on GitHub
    version: '3.7'
    
    services:
      runner: 
        image: node:lts
        ports: 
          - "$PORT:3000"
          - "$DEBUGPORT:9229"
        volumes:
        - .:/app:cached
        - yarn-cache-volume:/usr/local/share/.cache/yarn/v6:cached
        working_dir: /app
        command: "$COMMAND"
    
    volumes:
      yarn-cache-volume:
    
    
    compose 파일은 기본 이미지'node:lts'를 사용하여 runner이라는 서비스를 정의합니다.ports 섹션에서는 Docker가 호스트에 $PORT와 $DEBUGPORT의 포트 3000과 9229를 노출하도록 지시합니다.PORT 및 DEBUGPORT는 호스트에 필요한 포트를 구성하는 데 사용되는 환경 변수입니다.volumes 섹션에서는 마운트 및 명명된 볼륨을 정의합니다.프로젝트의 루트 디렉터리는 용기 내의 /app에 설치됩니다.또한 스토리지 캐시에 대해 명명된 영구 볼륨을 정의합니다.Docker는 볼륨을 관리하고 컨테이너를 중지/시작하여 볼륨을 유지합니다.이 캐시는 용기가 다음에 시작될 때의 실행 시간을 줄였다.working_dir은 현재 디렉터리를 ./app으로 설정하여 용기를 시작할 때마다 디렉터리를 변경하지 않도록 합니다.command이 환경 변수 $COMMAND로 설정되었습니다.이것은 docker compose를 호출할 때 제공할 수 있습니다.

    스크립트 실행


    매번 같은 명령을 쓰지 않도록 docker compose를 사용하여 용기를 만드는 run 스크립트를 원합니다.

    View on GitHub 실행
    #!/bin/sh
    export PORT=${PORT:-3000}
    export DEBUGPORT=${DEBUGPORT:-9229}
    export COMMAND=${@:-"yarn dev"}
    EXISTING_CONTAINER_ID=""
    if [-n `docker-compose ps -q runner`]; then
        EXISTING_CONTAINER_ID=`docker-compose ps -q runner`;
    elif [-n `docker ps -q --no-trunc | grep $(docker-compose ps -q runner)`]; then
        EXISTING_CONTAINER_ID=`docker ps -q --no-trunc | grep $(docker-compose ps -q runner)`;
    fi
    
    if [-z $EXISTING_CONTAINER_ID]; then
      COMMAND=${@:-"yarn dev"} docker-compose run --service-ports --rm runner
    else
      echo "Existing container ${EXISTING_CONTAINER_ID}"
      docker exec -it ${EXISTING_CONTAINER_ID} ${COMMAND}
    fi
    
    
    스크립트는 이렇게 실행됩니다.
    [PORT=<desired port on host> DEBUGPORT=<desired debug port on host>] ./run [<command>]
    
    DEFAULTS PORT=3000 DEBUGPORT=9229 COMMAND="yarn dev"
    
    
    []의 섹션은 옵션이며 기본값이 설정되어 있습니다.
    프로그램을 시작하려면 셸에 ./run을 작성해야 합니다.그것은 용기를 작동시켜 호스트의 포트 3000과 9229를 폭로한 후 용기 안에서 yarn dev을 실행한다.

    모든 명령은 용기에서 실행할 수 있습니다. 방법은 그 앞에 ./run을 붙이는 것입니다. 예를 들어 패키지를 추가하려면 ./run yarn add some-package-name을 실행하십시오../run bash을 실행하여 bash 셸을 용기에 연결할 수 있습니다.이 bashshshell은 용기에서 접두사가 없는 명령을 실행할 수 있습니다/뛰어다니다
    이 스크립트는 프로그램의 용기가 실행 중인지 확인하고 명령을 다시 실행합니다.대출 기록
    우리는 또한 cmd/PowerShell을 사용하여 윈도우즈 기계에 유사한 스크립트를 작성할 수 있다.
    이런 설정은 나에게 매우 큰 도움이 된다.다른 버전의 node/java/python 등을 설치할 걱정은 없습니다. 또한 현재 로컬 개발의 유일한 의존 항목은 Docker입니다.

    좋은 웹페이지 즐겨찾기