LoginSignup
0
6

More than 5 years have passed since last update.

docker コマンドを docker-compose 風に綺麗に書く(書き比べてみる)

Posted at

概要

docker コマンドをメンテしやすく綺麗に書ければ
docker-compose 使わなくてもいいのではないかと思い、書き比べてみました。
(いやまあ、docker-compose のメリットはメンテしやすさだけでは無いでしょうけども。)

docker-compose.yml版
version: '2'
services:

  mysql:
    image: mysql:5.7
    container_name: mysql
    hostname: mysql
    environment:
      - "MYSQL_ROOT_PASSWORD=xxx"
      - "MYSQL_DATABASE=xxx"
      - "MYSQL_USER=xxx"
      - "MYSQL_PASSWORD=xxx"
      - "TZ=Asia/Tokyo"
    command: >
      mysqld
        --character-set-server=utf8
        --collation-server=utf8_unicode_ci
        --skip-character-set-client-handshake
    volumes:
      - "./sql:/docker-entrypoint-initdb.d"
      - "/opt/datastore:/var/lib/mysql"
    ports:
      - "3306:3306"

  node:
    image: node:boron-alpine
    container_name: node
    hostname: node
    volumes:
      - "./app:/app"
    working_dir: /app
    command: [sh, -c, npm install --no-bin-links && node app]
    ports:
      - "1337:1337"
    depends_on:
      - mysql
docker+sh版
#!/bin/sh

docker run                              \
    --name     mysql                    \
    --hostname mysql                    \
    -e MYSQL_ROOT_PASSWORD=xxx          \
    -e MYSQL_DATABASE=xxx               \
    -e MYSQL_USER=xxx                   \
    -e MYSQL_PASSWORD=xxx               \
    -e TZ=Asia/Tokyo                    \
    -v /vagrant/app/sql:/docker-entrypoint-initdb.d  \
    -v /opt/datastore:/var/lib/mysql    \
    -p 3306:3306                        \
    -d                                  \
    mysql:5.7                           \
    mysqld                                      \
        --character-set-server=utf8             \
        --collation-server=utf8_unicode_ci      \
        --skip-character-set-client-handshake

docker run                  \
    --name     node         \
    --hostname node         \
    -v /vagrant/app:/app    \
    -w /app                 \
    --link mysql            \
    -p 1337:1337            \
    -d                      \
    node:boron-alpine       \
    sh -c "npm install --no-bin-links && node app"

どちらも同様に動きましたが下記の点に注意が必要:

  • docker版は volume で相対パスが使えない。

個人的結論

bash:docker+sh版 もアリかなと思いました。
docker-compose という層が無ければ、その分、インストール/学習/動かない場合の調査も減りますし。

この方法、もう少し使ってみて困ったことがあれば追記します。

もし、docker-compose の大きなメリット、お気づきの方がいらっしゃいましたら、コメント欄等でご指摘頂けると嬉しいです。

0
6
2

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
0
6