LoginSignup
6
6

More than 5 years have passed since last update.

Dockerで必要十分なNodejs+PostgreSQLの環境を作る方法

Last updated at Posted at 2017-09-22

Docker-composeを使い、PostgreSQLに接続するNodeJsアプリケーションの環境構築方法を説明します。
また、Dockerで難しい永続化されるファイル、されないファイルの違いを確認する事も出来ます。

成果物は以下の通り。手っ取り早く確認したい人もこちら
https://github.com/fushihara/docker-pgsql/tree/qiita-1

linuxで以下のコマンドを入力

$ git clone https://github.com/fushihara/docker-pgsql.git
$ cd ./docker-pgsql
$ git checkout qiita-1
$ docker-compose up -d

その後、対象マシン上で以下のURLを開く http://localhost:20006/

image.png

サーバー部分はnodejsのexpress、アクセスログはpostgresqlを使用しています。サーバー部分はcronで定期的なジョブが実行されています。ファイル永続化の部分はdocker-compose.ymlでvolumesの項目の指定方法の違いです。


最終的なDocker関連のファイルは以下の通り

docker-compose.yml
version: '2'
volumes:
    vl:
        driver: 'local'

services:
  pgsql_aaa:
    build: ./pgsql/
    restart: always
  nodejs_xxx: 
    build: .
    ports: 
      - "20006:20006"
    volumes:
      -    /usr/src/sample-node/node_modules
      -  .:/usr/src/sample-node
      -    /usr/src/volume-a/
      - vl:/usr/src/volume-b/
    depends_on: 
      - pgsql_aaa
    restart: always
Dockerfile
FROM node:8.5.0
ENV TZ=Asia/Tokyo
ENV APP_ROOT /usr/src/sample-node
RUN groupadd -g 500 ec2-user && useradd -g ec2-user -u 500 --create-home ec2-user

COPY . $APP_ROOT
RUN chown -R ec2-user:ec2-user $APP_ROOT
RUN mkdir /usr/src/volume-a && chown -R ec2-user:ec2-user /usr/src/volume-a
RUN mkdir /usr/src/volume-b && chown -R ec2-user:ec2-user /usr/src/volume-b

USER ec2-user
WORKDIR $APP_ROOT
RUN npm install

ENTRYPOINT ["npm","start"]

docker-compose.ymlでのpgsql_aaanodejs_xxxdocker ps等で識別しやすくするための表記です。

Volumeについて。

  • /tmp/test.txtは設定ファイルに記載が無いので、Dockerで何も指定しない場合の挙動となります。
  • /usr/src/volume-a/test.txt はdocker-compose.yml/usr/src/volume-a/とだけ指定されています。正直、この場合は何も指定していない/tmp/test.txtとの違いが分かりませんでした。(ハイライトしていませんが、すぐ上の/usr/src/sample-node/では指定する意味があります)
  • /usr/src/volume-b/test.txtはdocker-compose.ymlvi:/usr/src/volume-b/と書かれており、viというのは別の箇所でも指定されています。この表記ですと、上記の二つよりデータが消える場合が少なくなります。データボリュームの名前が固定されるので、コンテナを作り直してもデータが引き継がれます。

image.png

最低限これさえ把握していれば、自分で作る分の簡単なツールは不自由なく作れると思います

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6