Docker Compose 및 VS 코드로 환경 개발

최근에 나는 내 개발 환경을 정지 버전으로 옮겨서 생산과 더욱 가까운 곳으로 옮길 수 있도록 시도해 왔다.이 목표를 실현하기 위해서, 나는 자바15를 사용하여 나의 개인 프로젝트 (https://www.mocsh.com 를 docker compose 기반 설정으로 전환했다.나는 아직 그것을 생산으로 밀어붙이지 않았다. 왜냐하면 나는 아직도 그것을 가지고 놀고 있기 때문이다. 그러나 나는 개발 환경이 이미 내가 성숙하다고 말할 수 있는 단계에 이르렀다고 생각한다.
다중 서비스 (웹api,db) 를 설정하는 절차를 안내하고 VS 코드를 사용하여 개발할 것입니다.이것은 기술적으로 알 수 없는 것이기 때문에 자바/파이톤/NodeJS/Ruby/PHP,MongoDB/PostgreSQL/MySQL/MariaDB든 당신이 가장 좋아하는 창고든 모두 일을 할 수 있어야 합니다.
가정:
  • 컴퓨터에 Docker For Desktop이 설치되어 있으며 Docker compose
  • 와 함께 제공됩니다.
  • 당신은 docker compose의 기본 지식을 잘 알고 있습니다.만약 네가 그렇지 않다면, 이것은 Getting started with docker-compose상의 공식 문서이다
  • 이 작업은 다음과 같은 두 부분으로 구성된 시리즈에서 수행됩니다.
  • 제1부분(본문) - 2층 응용 프로그램
  • 에 docker compose 환경 설정

  • - 이 환경에서 VS 코드를 사용하여 개발
  • 너는 이 예를 같은 복잡한 응용 프로그램에 보급할 수 있지만, 우리가 먼저 빈git repo를 만들면 우리의 진도를 추적할 수 있다.
    mkdir my-dev-env
    cd my-dev-env
    git init -q 
    

    Docker Compose 이니시에이터
    docker compose 파일을 정의하는 것부터 시작합니다.이 연습에 대해 나는 우리가 실행할 프로그램이 최신 LTS에서 실행되는 NodeJS 프로그램이라고 가정할 것이다.docker-compose.yaml라는 파일을 만듭니다.
    volumes:
      webapi-code: {}
      webapi-root: {}
    
    services:
      webapi:
        image: node:lts
        volumes:
          - webapi-code:/usr/src/app
          - webapi-root:/root
        command: ["/bin/bash", "-c", "--", "while true; do sleep 86400; done"]
    
    이 디렉토리에서 다음 명령을 실행합니다.docker-compose up -d다음과 같은 메시지가 표시되어야 합니다.
    Creating my-dev-env_webapi_1 ... done
    
    여기서 my-dev-env는 파일이 있는 디렉토리의 이름으로 바뀝니다.
    정리를 수행하려면 같은 디렉토리에서 docker-compose down를 실행합니다.

    구성 이해
    이 파일의 각 항목을 훑어봅시다.먼저 최상위 섹션입니다.volumesdocker compose에 따르면 우리가 필요로 하는 저장소는 용기의 일부분이 아니다. 용기는 일회용이어야 하기 때문이다.우리는 수시로 새로운 컨테이너를 제기할 수 있어야 한다.그런데'지속성'데이터는 어디로 갔을까?그것은 볼륨에 유지된다.
    이 절에서 우리는 두 개의 볼륨을 정의할 것이다. 하나는 코드에 사용되고, 다른 하나는 홈 디렉터리에 사용되며, 용기의 생명 주기 외에 데이터를 보존하는 데 도움을 줄 것이다.services는 docker compose에게 이것은 실행 가능한 서비스라는 것을 알려주는 방법으로 자신의 용기가 있을 것이다.
    저희가 정의한 서비스 이름은 webapi입니다.지정한 경로에 볼륨을 불러왔고, docker 이미지 node:lts 에서 이 서비스를 만들어야 한다고 지정했습니다.이미지에 사용할 수 있는 레이블node을 다음 위치에서 볼 수 있습니다. Node image on Docker Hub
    이곳의 중요한 요소 중 하나는command인데 이것은 필수적이고 중요한 것이다.이것은 용기를 시작할 때 실행할 명령을 지정합니다.이 명령을 종료하면 컨테이너가 중지됩니다.기본적으로 gradle 용기 실행 gradle 명령이 실행됩니다.그리고 용기에 코드가 없고, 아무것도 자동으로 실행하지 않으려면 용기가 정지됩니다.
    이 항목을 삭제하고 docker-compose up 명령을 다시 실행하여 이 동작을 시도합니다.

    데이터베이스 추가
    이 설정에 데이터베이스를 추가하는 것은 매우 간단합니다.만일 우리가 MongodB 실례를 사용하기를 원한다면, 첫 번째 단계는 저장을 지속시키기 위해 불러올 볼륨을 찾는 것이다.만약 이것이 당신의 일회용 실례라면, 지속적인 저장소를 사용하지 않기로 선택할 수 있지만, 이를 실현하는 절차를 보여 드리겠습니다.
    우선, 우리는 데이터베이스에 있는 데이터가 용기 창설 주기 내에 변하지 않기를 희망하며, 우리가 서로 다른 버전의 데이터베이스를 사용하기를 원하지 않도록 한다.따라서 다음과 같이 volumes 섹션에 다른 항목을 추가합니다.db-data: {}모든yaml 파일의 빈칸은 매우 중요합니다.따라서 세 항목이 정렬되었는지 확인하십시오.
    다음은 데이터베이스 자체를 추가합니다.이를 위해 Docker Hub page of MongoHow to use this image 부분을 살펴보자.
    docker compose 파일에 서비스 항목을 추가하지만 수정이 필요합니다.
  • 볼륨을 설치하고자 합니다
  • .
  • 저희는 사용자 이름/비밀번호를 필요로 하지 않습니다. 이것은 개인적인 실례이기 때문입니다
  • services 파일의 docker-compose.yaml 부분에 다음과 같은 내용을 추가합니다.
      mongo:
        image: mongo
        restart: always
        volumes:
          - db-data:/data/db
    
    기존의 용기를 멈출 필요가 없다.docker-compose up -d 명령을 다시 실행하기만 하면 모든 관련 작업을 수행할 수 있습니다.
    당신은 비슷한 상황을 보게 될 것이다.
    Creating volume "my-dev-env_db-data" with default driver
    Pulling mongo (mongo:)...
    latest: Pulling from library/mongo
    Digest: sha256:02e9941ddcb949424fa4eb01f9d235da91a5b7b64feb5887eab77e1ef84a3bad
    Status: Downloaded newer image for mongo:latest
    my-dev-env_webapi_1 is up-to-date
    Creating my-dev-env_mongo_1 ... done
    

    다음 단계
    좋습니다. 작업 용기를 만들었습니다.Docker Dashboard UI를 열면 my-dev-env 또는 사용자가 사용하는 이름의 항목을 볼 수 있고, 이 항목을 펼치면 두 개의 서비스 용기를 볼 수 있습니다: 웹api와 mongo.
    다음 단계:.
    본문은 최초로 발표되었다. https://blog.mandraketech.in/dev-environment-using-docker-compose-and-vs-code

    좋은 웹페이지 즐겨찾기