【Docker】docker-compose.ymlのvolumesのlong syntaxとshort syntaxの違い


はじめに

 本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

docker-compose.ymlのvolumesのlong syntaxとshort syntaxの違い

long syntax

docker-compose.yml
  db:
    image: mysql:8.0.28
    command: --default-authentication-plugin=mysql_native_password && bash -c "chmod +x /docker-entrypoint-initdb.d/00_grant.sh"
    healthcheck:
      test: mysqladmin ping -h db -u$${MYSQL_USER} -p$${MYSQL_PASSWORD}
      interval: 1s
    restart: on-failure
    volumes:
      - mysql_data:/var/lib/mysql
      - type: bind
        source: ${MY_CNF_PATH}
        target: /etc/mysql/conf.d/my.cnf
      - type: bind
        source: ${INITDB_PATH}
        target: /docker-entrypoint-initdb.d

起動時にホストに指定したファイルが存在しない場合にはエラーが発生する。

short syntax

docker-compose.yml
 api:
    build: .
    volumes:
      - .:/myapp

起動時にホストに指定したファイルが存在しない場合には自動的にファイルが作成される。