Docker-compose를 사용하여 node.js의 환경을 구축해 보았습니다.

Docker-compose를 사용하여 node.js의 환경 구축을한다.



이쪽이 마지막 기사.
Docker에 대해 기본적인 것들을 따라 봤어.
이곳에서 Docker의 기본적인 것을 추적했으므로 이번에는 docker-compose를 사용해 나가려고 생각합니다.

docker-compose와 Dockerfile은 어떻게 다른가요?



docker-compose는 docker-compose.yml의 설명을 docker-compose 명령을 사용하여 docker 이미지를 만듭니다.
Dockerfile은 docker build 명령으로 docker 이미지를 만듭니다.

Dockerfile · · · docker image 작성 순서
docker compose··· 복수의 컨테이너의 어플리케이션 정의를 기술할 수 있어 각각의 컨테이너의 docker image를 작성할 수 있다.

우선 Docker의 생각으로


이 생각이 정착하고 있으면 이해하기 쉬운 것일까라고 생각합니다.
우선은 docker image를 작성하는 것이 먼저입니다.
다음 명령으로 docker image를 만들 수 있습니다.
※인식 부족이라면 가르쳐 주세요.
# docker hubからdocker imageをpullする
$ docker pull [IMAGE_NAME]

# 既存のdocker imageからオリジナルのdocker imageを作成する
$ docker commit [CREATE_IMAGE_NAME] [IMAGE_NAME]

# Dockerfileからイメージを作成
$ docker build -t[イメージに名前を設定] [IMAGE_NAME] [Dockerfile/path]

# docker-compose.ymlからイメージを作成
$ docker-compose build

그런 다음 docker container를 시작합니다.
그 때의 명령이 여기
# 単発での起動
$ docker run

# docker-composeでの起動
$ docker-compose up

image가 있어서의 container라고 하는 생각이 생겼으므로, 조속히 docker compose를 사용해 갑니다.

docker compose를 사용한다.



확실한 버전 확인에서.
$ docker-compose -v
docker-compose version 1.24.1, build 4667896b

좋아요.

이번에는 node.js를 도입하겠습니다.
참고로 한 기사는 이쪽입니다.
【초보자용】Docker로 간편하게 Node.js 개발 환경 구축 (2)

초기의 디렉토리 구성은 이쪽.
MyApp
├─ node   
│   ├─ Dockerfile
│   └─ .dockerignore
└─ docker-compose.yml

Dockerfile에 작성합니다.
# ベースイメージを指定
FROM node

# node.js の環境変数を定義する
# 本番環境では production
ENV NODE_ENV=development

# 雛形を生成するのに必要なパッケージのインストール
RUN npm install -g express-generator

# ディレクトリを移動する
WORKDIR /app

# ポート3000番を開放する
EXPOSE 3000

다음은 docker-compose.yml
version: '3'
services:
  webserver:
    build: node
    image: node-express-dev:1.0
    tty: true
    volumes:
      - ./node/app:/app
    ports:
      - "8080:3000"

build 라고 하는 부분에 주목.
여기에는 Dockerfile의 경로를 씁니다.
즉 node 디렉토리 안에 있는 Dockerfile을 사용해 docker image를 작성한다고 하는 의미군요.

어쨌든 Dockerfile과 docker-compose의 관계성을 알았는지 생각합니다.

Dockerfile과 docker-compose.yml이 작성되면 docker image를 만듭니다.
$ docker-compose build
Step 1/5 : FROM node
(省略)
Successfully built c3154d2017fb
Successfully tagged node-express-dev:1.0

라고 표시될까 생각합니다.
결국, docker-compoes라고 해도 Dockerfile에서 docker image를 작성하고 있었군요.
그래서 docker-compose.yml을 사용하면 종속성 등도 정의하면서 여러 컨테이너의 Dockerfile을 실행할 수 있다고 말한 이점이 있다고 말한 곳입니까?

다음 가자.
docker images 로 방금 전의 이미지가 작성되고 있는 것을 확인하면 컨테이너를 기동시킵니다.
$ docker-compose up -d
docker ps 에서 컨테이너가 시작되었는지 확인합니다.
시작되면 로그인합니다.
$ docker exec -it [CONTAINER_NAME] /bin/sh

express-generator로 병아리를 만듭니다.
$ express -f --view=pug /app

npm 설치
$ npm install

서버 시작
$ npm start

브라우저에서 http://localhost:8080로 이동합니다.

"익스프레스
Welcome to Express”

라고 표시되면 OK입니다.

이상.

요약



docker run이거나, docker-compose up이거나 비슷한 명령이 가득하기 때문에 처음에는 당황합니다만, 하는 것은 イメージ作成→コンテ起動 뿐입니다.

그 방법이 많이 있을 뿐입니다.

image는 hub에서 pull 해 오는지, run으로 이미지를 자동 다운로드 하는지, 혹은 기존의 이미지를 사용해 docker commit로 오리지날 이미지를 작성하는지, Dockerfile을 사용해 코드로서 이미지 작성을 관리할 것인가 .

컨테이너 시작도 함께합니다.
docker run으로 얻은 이미지로 컨테이너를 만들 것인지, docker-compse 명령으로 docker-compose.yml을 실행하여 콘티를 만들 것인가?
イメージ作成→コンテ起動
이것을 어떻게 실현하는지입니다.
그래도 각 옵션에서 또 거동은 다르기 때문에, 거기는 수시로 조사하면서 해 나가려고 생각합니다!

좋은 웹페이지 즐겨찾기