2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「docker compose up」すると出てきた `version is obsolete` という警告について

Last updated at Posted at 2024-08-24

はじめに

Docker を使用してMySQLの環境構築をしていたところ、docker compose upを叩くとversion is obsoleteという謎の警告が出てきました。

問題

docker-compose.ymlを作成し、コンテナを起動したところ、以下のような警告が出ました。

$ docker compose up
WARN[0000]/Users/user/app/docker-compose.yml: `version` is obsolete

バージョンに問題があるのかなと思い、Dockerのドキュメントで原因を探ってみました。

作業ディレクトリ内での、Compose ファイルのデフォルトのパスは compose.yaml (推奨)か compose.ymlです。
Compose 実装は、下位互換性のために docker-compose.yaml と docker-compose.yml もサポート すべきです。
両方のファイルが存在する場合、 Compose 実装は標準である compose.yaml を優先 しなければいけません。

原因

  • versionの値を見てComposeファイルの検証を行うべきではないとされており、Compose V2を使う限りにおいてはもはや不要な項目であった。
  • Composeのバージョンが最新になったことによるものだった。
  • Compose V1では、このversionの値を見てComposeファイルの検証が行われていた。

以上の3点から、バージョンが最新になったことでversionプロパティが廃止されたためであり、docker-compose.ymlファイルのversionを削除すれば良いことがわかりました。

解決方法

compose.yaml
version: "3.9" # この行を削除すれば良い
services:
  db:
    container_name: MySQL
    build:
      context: .
      dockerfile: Docker/MySQL/Dockerfile
      ....

また、ファイル名をdocker-compose.ymlcompose.yamlに変更も行い、無事動作しました。

まとめ

今回の警告は Composeのバージョンが新しくなったことによるものでした。
Docker Compose V2によって新しく使えるようになったものもあります。
既存のdocker-compose.ymlをわざわざ修正するほどのコストをかけるべきでは無いかもしれませんが、新しく作る場合はCompose Specに準拠した書き方にしていくのが良さそうです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?