ぽよメモ

レガシーシステム考古学専攻

docker-compose.ymlをversion2に書き直し

この前書いた以下の記事

poyo.hatenablog.jp

がやたらと人気なのですが,ちょっと使ってるdoker-composeが怪しい(buildが不明になっている)やつだったので正しく入れ直し,ついでにdocker-compose.ymlを書き直します.

前に書いたもの

minecraft:
  image: iztg/minecraft
  container_name: mc_server
  ports:
    - "25565:25565"
  volumes_from:
    - data-minecraft
  environment:
    EULA: "TRUE"
    VERSION: "1.10"
  links:
    - fluentd
  log_driver: fluentd
  log_opt:
    fluentd-address: localhost:24224
    fluentd-tag: minecraft.raw
data-minecraft:
  image: busybox
  container_name: data-minecraft
  volumes:
    - /data
fluentd:
  container_name: fluentd
  build: fluentd/
  ports:
    - "24224:24224"
  volumes:
    - ./fluentd/:/fluentd/etc/
    - ./fluentd/plugins:/fluentd/plugins
  environment:
    FLUENTD_CONF: fluent.conf

以上がこの前の記事で書いたdocker-compose.ymlの中身ですが,書き方が古く,もしかしたら今後使えなくなる可能性が高いです.

バージョン2に書き直す

まずversion2ではいくつかのセクションに別れた記述をします.

# バージョンの宣言
version: '2'

 #具体的なアプリケーションの記述
services:
  web:
    image: hoge
    networks:
      - my_net
  db:
    image: fuga
    networks:
      - my_net

# ネットワークの記述
networks:
  my_net:
    driver: bridge

これに従って記述していきます.

log_driverはloggingに

2ではlog_optやlog_driverは消去されています.代わりに以下のようなloggingを用います.

logging:
  driver: "syslog"
  options:
    syslog-address: "hoge"

fluentdドライバーを使用するときは以下のようになります.

logging:
  driver: "fluentd"
  options:
    fluentd-address: localhost:24224
    tag: hoge.fuga

僕の環境ではlocalhostの代わりにminecraftコンテナでlinkオプションにfluentdを記述し,fluentdにおいてexposeで24224を解放,エイリアスでホスト名を解決させようとしましたが,なぜか上手くいっていないのでおとなしくportsでホストのポートを使っています.

リファレンス:

Compose ファイル・リファレンス — Docker-docs-ja 1.12.RC ドキュメント

Fluentd ロギング・ドライバ — Docker-docs-ja 1.9.0b ドキュメント

完成

logging周り以外はほとんど変わっていないのでserviceセクションに入れておくだけです.

version: '2'
services:
  fluentd:
    container_name: fluentd
    build: fluentd/
    ports:
      - "24224:24224"
    volumes:
      - ./fluentd/:/fluentd/etc/
      - ./fluentd/plugins:/fluentd/plugins
    environment:
      FLUENTD_CONF: fluent.conf
  minecraft:
    container_name: mc_server
    build: minecraft/
    links:
      - fluentd
    ports:
      - "25565:25565"
    logging:
      driver: fluentd
      options:
        fluentd-address: localhost:24224
        tag: minecraft.raw
    volumes_from:
      - data-minecraft
    environment:
      EULA: 'TRUE'
      VERSION: '1.10.2'
      OPS: "_pudding_1"
      ENABLE_QUERY: 'true'
      ENABLE_COMMAND_BLOCK: 'true'
  data-minecraft:
    image: busybox
    volumes:
      - /data
    container_name: data-minecraft