Docker는 모든 개발자에게 힌트를 작성합니다.

Docker는 환경을 뛰어넘어 개발하고 생산하는 강력한 도구다.그러나 여러 용기를 사용하는 대형 프로그램을 확장할 때 사용하기 어려울 수도 있습니다.이때 Docker Compose는 컨테이너화 게임의 유저가 되었다. 컨테이너의 생성과 관리 스크립트를 작성하는 데 도움을 주고 Docker의 강력한 기능을 이용한다.
오늘 제가 여러분께 보여드릴 것은 작은 기교입니다. 개발 과정에서 Docker Compose를 어떻게 활용하는지 알려드리겠습니다.
노드 가져올게요.js의 경우 Node에 대한 자세한 내용은 알 필요가 없습니다.js, 이것은 단지 당신과 이 기교를 공유하는 예일 뿐입니다.나는 또 빠르게 녹이 슬는 예를 보여줄 것이다.

Docker Compose 구성


노드에 익숙해지면Docker Compose를 사용하여 js 개발을 진행할 때 이 문제에 사용된 유행하는 이미지는 공식적인 node 이미지로 node (자바스크립트 코드를 실행하고 해석하는 실행 가능한 파일) 과 npm (Node.js 패키지를 설치하는 도구) 등 일련의 도구를 포함하고 있음을 알 수 있습니다.
당신은 이미 이런 방식으로 당신의 docker-compose.yaml을 구축했을 것입니다.
version: "3"

services:
    node:
        image: node
        user: node
        working_dir: /home/node/app
        tty: true
        stdin_open: true
        volumes:
            - .:/home/node/app
이것은 거의 모든 Docker Compose 설정입니다. 오래된 용기를 만드는 데 사용되며, 모든 중요한 일에 사용됩니다.먼저 백그라운드에서 컨테이너를 시작합니다.
$ docker-compose up --detach
그런 다음 스크립트를 실행하는 것과 같은 몇 가지 명령에 사용할 수 있습니다.
$ docker-compose exec node node main.js
또는 새 NPM 구성을 초기화하려면:
$ docker-compose exec node npm init --yes
심지어 우리가 가장 좋아하는 도구도 설치한다.
$ docker-compose exec node npm install --save-dev rollup
그런데 우리가 어떻게 명령마다 이 node 작은 물건을 반복하는지 볼까요?npm이라는 용기를 사용할 때 node을 운행하는 것이 얼마나 부자연스러운지 봅시다.오늘은 다양한 Docker Compose 구성을 사용하여 명령을 보다 자연스럽고 직관적으로 수행하는 방법을 보여 드리겠습니다.

향상된 API


우선, 우리는 두 개의 용기가 필요하다. 하나는 node 실행 가능한 파일이고, 다른 하나는 npm 실행 가능한 파일이다.공식 이미지가 포함되어 있기 때문에 사용자 정의 이미지 두 개를 사용할 필요가 없습니다.다음과 같이 node 이미지를 두 번만 재사용할 수 있습니다.
version: "3"

services:
    node:
        image: node
        user: node
        working_dir: /home/node/app
        entrypoint: node
        volumes:
            - .:/home/node/app

    npm:
        image: node
        user: node
        working_dir: /home/node/app
        entrypoint: npm
        volumes:
            - .:/home/node/app
이 두 용기의 설정은 entrypoint 속성을 제외하고는 거의 똑같습니다.이것은 명령을 실행하기 전에 추가할 명령을 알려 주는 데 사용됩니다.만약 이것이 좀 이해하기 어렵다면, 너는 이것이 사실상 매우 간단한 수작이라는 것을 발견할 수 있을 것이다.현재 불필요한 stdin_opentty 속성도 삭제했습니다.
이것은 지금 우리가 어떤 노드를 운행하고 싶다면js 스크립트, 우리는 이렇게 할 수 있다.
$ docker-compose run node main.js
현재 Docker Compose를 사용하여 우리의 노드가 얼마나 뚜렷하고 아름다운지 보십시오.js 스크립트?이제 좀 더 직관적이지 않아요?이렇게 하는 또 다른 장점은 명령(node main.js)이 멈추면 용기가 멈추는 것이다.이렇게 하면 우리는 이미 백엔드에서 실행되고 있는 Docker 용기를 멈추는 것을 잊지 않을 것이다. (내가 몇 번이나 어떤 항목을 검색해야 했는지, 나는 한 서버가 같은 포트에서 실행되고 있다. 단지 그것을 취소하기 위해서이다. 왜냐하면 나는 어제 그것을 멈추기가 귀찮았기 때문이다. 나는 이것도 너에게 일어났다고 믿는다.)
그러나 여기까지는 아닙니다. 동일한 API를 사용하여 npm 명령을 실행할 수 있기 때문입니다.
$ docker-compose run npm install --save-dev rollup-plugin-terser
이렇게 해서 우리는 또 다른 소포를 포함했다.이게 얼마나 좋은 것 같아?우리는 우리가 원하는 명령을 계속 추가할 수 있다.이것이 바로 entrypoint의 속성이 이렇게 강하고 우리가 이미 훌륭한 도구의 기능을 활용하기 위해 아름다운 작은 API를 구축할 수 있는 이유이다.

정말?


JavaScript와 노드에 관심이 많습니다.여기는 js 생태계이지만, 너는 이 속임수로 어떤 일을 하든지 할 수 있다.Ruby, Python, C, Rust 등등...한 가지 일.
version: "3"

services:
    node:
        image: node
        user: node
        working_dir: /home/node/app
        entrypoint: node
        volumes:
            - .:/home/node/app

    npm:
        image: node
        user: node
        working_dir: /home/node/app
        entrypoint: npm
        volumes:
            - .:/home/node/app

    cargo:
        image: rust
        user: 1000:1000
        working_dir: /usr/src/myapp
        entrypoint: cargo
        volumes:
            - .:/usr/src/myapp


$ docker-compose run cargo new awesome-wasm-thingy --bin
여기에 cargo 명령만 포함되어 있습니다. 이 명령은 Rust를 사용하여 웹 Assembly의 다음 큰일을 생성하는 데 사용됩니다.이렇게
그러나 작은 단점은 이미 실행된 용기보다 용기를 실행하는 데 더 많은 시간이 필요하다는 것이다.현재 우리의 명령은 실행 가능한 파일이 멈출 때 실행 중인 용기를 만들고 삭제하기 때문입니다. 앞에서 말한 바와 같이.그러나 내가 보기에 우리의 컨테이너 운행과 정지에 소요되는 시간은 그리 길지 않다.나는 집에서 소형 노트북으로 일하기 때문에 1, 2초의 용기가 작동하고 제거되는 것을 자주 본다.만약 네가 잠시 기다려도 괜찮다면, 이것은 매우 멋진 해결 방안이다.
이 속임수를 너는 어떤 언어를 쓸 줄 아니?Docker Compose 구성과 명령을 공유하십시오!
내 책을 읽어줘서 고마워요.만약 당신에게 어떤 문제가 있다면, 조금도 주저하지 않고 그들에게 물어보세요. 만약 당신이 이 문장이 좋고 나쁨이라고 생각한다면, 나에게 왜 그런지 말해 주세요.

좋은 웹페이지 즐겨찾기