実現したいこと
ドッカーイメージを初回ECRプッシュ後、ファイル内容に変更が生じた。
最新のドッカーイメージをECRにあるプライベートリポジトリに反映させたい。
前提
ローカルではDockerで、Rails API + reactのアプリを開発しました。
複数コンテナなのでdocker-composeを使っています。
本番環境のAWSFargateにデプロイしたいと思っています。
発生している問題・エラーメッセージ
タグ付けしたドッカーイメージをプッシュすると以下のようにコンソールに表示される。
The push refers to repository [hogehoge] hogehoge: Layer already exists hogehoge: Layer already exists hogehoge: Layer already exists hogehoge: Layer already exists ・ ・ ・ ・ latest: digest: sha256:hogehuga size: 4725
該当のソースコード
ローカルにてファイル編集後、docker-fileあるところのディレクトリ内で以下の順にコマンドを打ち込みました。
docker-compose build aws ecr get-login-password ・・・・・(awsCLIのログイン) docker tag hogehoge huga docker push huga
試したこと
よくみる記事では、
docker build
してますが、docker-composeをローカルで使ってる時でも、後からdocker buildしないといけないのですか?docker-compose buildで代用と思ってます。
補足情報(FW/ツールのバージョンなど)
AWS
MAC
Rails
更新後ちゃんとビルドし直して、そのビルドし直したイメージをちゃんとpushできていますか?
dockerfileのあるところでdocker-compose buildしていると書いてありますが、そうではなくdocker-compose.ymlのあるところでやる必要があるのでは
dockerfileのあるディレクトリで行うのは、docker pushの意識でした。
docker-compose buildで新しいイメージが作られました。
勘違いだったのでしょうか・・
お騒がせしました。コメントありがとうございました。
docker-composeはファイルパスを指定しないとカレントディレクトリにあるdocker-compose.ymlを参照するので、docker-compose.ymlがないディレクトリで実行しても失敗します。
明示的にファイルを読み込みたいときは -f でファイルを指定してください。
https://docs.docker.jp/compose/reference/docker-compose.html
ちなみに余談ですが、docker-composeはもともとdockerのプラグインとして作成されたものですが、V2になってDockerに統合されました。
なので、V2で実行したい場合
docker compose
と、ハイフンを入れずにDocker CLIのコマンドとして実行できるようになりました。
基本的にV1でできたことはそのままできるはずですが、V2になって新たに定義されたものもあります。(自分も細かくは把握できておりませんが…)
以下の記事がよくまとまってるので参考にしてみてください。
https://zenn.dev/miroha/articles/whats-docker-compose-v2
回答1件
あなたの回答
tips
プレビュー