質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

34039閲覧

dockerにてイメージのbuildができない

ridhoge

総合スコア6

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/09 16:22

編集2021/06/10 01:46
docker-compose build

にてイメージを作成しようとすると途中でエラーになってしまいます。
解決法についてお聞きしたいです。

##概要

apt-getにてアップデートなどを行いたいと思っています。
php-apatche(app)コンテナとmysql(db)コンテナを作成しようとしています。

###エラー

executor failed running [/bin/sh -c apt-get update && apt-get install -y libonig-dev libzip-dev unzip mariadb-client && docker-php-ext-install pdo_mysql mysqli mbstring zip]: exit code: 100 ERROR: Service 'app' failed to build : Build failed

Dockerfile内のRUNコマンドのとことで止まってしまいます。

FROM php:7.4-apache WORKDIR /var/www/html RUN apt-get update \ && apt-get install -y libonig-dev \ libzip-dev \ unzip \ mariadb-client \ && docker-php-ext-install pdo_mysql \ mysqli \ mbstring \ zip COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer ENV COMPOSER_ALLOW_SUPERUSER 1 COPY ./src /var/www/html COPY ./docker/app/php.ini /usr/local/etc/php/php.ini

調べたこと試したこと

・apt-getコマンドが使えないのかどうか
ググってみるとコマンド自体が使えないとnot foundが返ってくるのでおそらく違う。
・apt-get update以降の書き方について
docker docsを見ても変な書き方には見えない
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#sort-multi-line-arguments

##問題箇所のエラー 2021/06/10追記

Reading package lists... E: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/main/binary-amd64/by-hash/SHA256/029770e68e814e366c707db624f03b1d8bd6b3be70ee43797f1e9d5932933900 File has unexpected size (13399 != 291544). Mirror sync in progress? [IP: 151.101.130.132 80] Hashes of expected file: - Filesize:291544 [weak] - SHA256:029770e68e814e366c707db624f03b1d8bd6b3be70ee43797f1e9d5932933900 - MD5Sum:8500407363aeac0e51fc632e1c6223ab [weak] Release file created at: Wed, 09 Jun 2021 21:09:35 +0000 E: Failed to fetch http://deb.debian.org/debian/dists/buster/main/binary-amd64/by-hash/SHA256/935deda18d5bdc25fb1813d0ec99b6e0e32a084b203e518af0cf7dc79ee8ebda File has unexpected size (13349 != 7906864). Mirror sync in progress? [IP: 151.101.110.132 80] Hashes of expected file: - Filesize:7906864 [weak] - SHA256:935deda18d5bdc25fb1813d0ec99b6e0e32a084b203e518af0cf7dc79ee8ebda - MD5Sum:ba791e511a2a4b6523ac06f404e32f42 [weak] Release file created at: Sat, 27 Mar 2021 09:55:13 +0000 E: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/main/binary-amd64/by-hash/SHA256/0233e1a9b12fea0d60fc076ae44219328d058ce04e8c9817eb9983d68808395d File has unexpected size (13365 != 10856). Mirror sync in progress? [IP: 151.101.110.132 80] Hashes of expected file: - Filesize:10856 [weak] - SHA256:0233e1a9b12fea0d60fc076ae44219328d058ce04e8c9817eb9983d68808395d Release file created at: Wed, 09 Jun 2021 20:08:22 +0000 E: Some index files failed to download. They have been ignored, or old ones used instead. The command '/bin/sh -c apt-get update' returned a non-zero code: 100

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Dockerfile内のRUNコマンドのとことで止まってしまいます。

ご質問内容に掲載されたエラー行の前に、どうして exit code: 100 が出てしまうのか、関連するログがあると思いますので、そちらも記載されたほうが原因解決につながると思います。

ちなみに、記載された Dockerfile から、ビルドに関連する部分だけを切り出して、こちらでも検証してみました。こちらが切り出したものです。

Dockerfile

1FROM php:7.4-apache 2 3WORKDIR /var/www/html 4 5RUN apt-get update \ 6 && apt-get install -y libonig-dev \ 7 libzip-dev \ 8 unzip \ 9 mariadb-client \ 10 && docker-php-ext-install pdo_mysql \ 11 mysqli \ 12 mbstring \ 13 zip

こちらを、私の環境上で実行する限りは、docker build を実行してもエラーは出ませんでした。

$ docker build -t example . (途中省略) find . -name *.so | xargs rm -f find . -name .libs -a -type d|xargs rm -rf rm -f libphp.la modules/* libs/* Removing intermediate container 186d13691128 ---> 76607f962771 Successfully built 76607f962771 Successfully tagged example:latest

そのため、 Dockerfile そのものには問題が無いように見えます。

apt-getコマンドが使えないのかどうか

PHP 7.4 の Docker イメージは、 Debian 10 をベースにしていますので、 apt-get コマンドは使えます。

apt-get update以降の書き方について

こちらも先に書いた通り、記述そのものには問題なさそうに見えます。

参考までに、このような場合のデバッグ方法としては、 Dockerfile の RUN 命令を分割すると分かりやすいです。1行にまとめるのは、歴史的経緯やベストプラクティスによるものですが、検証中・開発中も、その通りにする必要はありません。

たとえば、このようにすると

Dockerfile

1FROM php:7.4-apache 2 3WORKDIR /var/www/html 4 5RUN apt-get update 6RUN apt-get install -y libonig-dev \ 7 libzip-dev \ 8 unzip \ 9 mariadb-client 10RUN docker-php-ext-install pdo_mysql \ 11 mysqli \ 12 mbstring \ 13 zip

原因がどこにあるのか分かりやすくなります。

今回の場合であれば、さらにインストールしたい単位まで細かくすると、原因がわかりやすくなるでしょう。

Dockerfile

1FROM php:7.4-apache 2 3WORKDIR /var/www/html 4 5RUN apt-get update 6RUN apt-get install -y libonig-dev \ 7 libzip-dev \ 8 unzip \ 9 mariadb-client 10RUN docker-php-ext-install pdo_mysql 11RUN docker-php-ext-install mysqli 12RUN docker-php-ext-install mbstring 13RUN docker-php-ext-install zip

ちなみに、こちらも私の環境からは問題なくビルドは通りました。

その他考慮する点としては、言語環境によっては、 build 時にキャッシュの影響を受けてしまう場合もあります。そのような場合は、キャッシュを無効化する --no-cache オプションを付けて実行・検証する方法もあります。(例: docker build -t example --no-cache .

投稿2021/06/09 19:39

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ridhoge

2021/06/10 01:47 編集

ありがとうございます。 一度切り分けるために RUN apt-get update 以外のところもコメントアウトして見たところエラーが起きました。このupdate時点で既に問題が起きていそうです。 また、エラーの詳細についての記載についてご指摘ありがとうございます。 質問に追記いたしました。 ファイルサイズの大きさによって問題が起きているようでした。
ridhoge

2021/06/10 02:50

細かく分けて検索してやっとまさかという原因ということがわかりました。 MacやiOSのコンテンツ制限機能の問題でした。 丁寧に回答してくださって、かつこれからのエラー対応なども参考になりました。 zembutsu様をベストアンサーとして質問を解決済みにいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問