LoginSignup
5
2

More than 3 years have passed since last update.

Laradock 起動時にphp-redisのFailed to fetchが出て失敗した時の対処法

Last updated at Posted at 2019-08-04

最近Dockerの基本を勉強したので、早速Laravelで何か作ってみようとLaradockをローカルで起動しようとした際に表題のエラーが出たので対処した方法を記載します。

もっと簡単な、あるいはまっとうなやりかたあれば教えていただきたく、です。
(確認の仕方も含めて丁寧目に書いています)

※Qiitaへの投稿は初めてなので、色々不安ですが、誤りなどありましたらご指摘ください。

状況

ローカルへの環境構築でdocker起動までの手順は下記の記事に従いました。
なお私の環境はmacです。
 DockerでLaravelの環境を構築し、Herokuへのデプロイを目指すためのチュートリアル

dockerの起動

laradockディレクトリ内でdocker-compose upします。

$ docker-compose up -d nginx mysql phpmyadmin

すると今回は以下のようなエラーが出て、起動に失敗しました。

エラー内容

E: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/p/php-redis/php-redis_4.2.0-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  404  Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
ERROR: Service 'workspace' failed to build: The command '/bin/sh -c if [ ${INSTALL_PHPREDIS} = true ]; then     apt-get install -yqq php-redis ;fi' returned a non-zero code: 100

php-redisのfetchに失敗しています。

※ ちなみにurl(http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/p/php-redis/php-redis_4.2.0-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb) を確認するとたしかに該当のページが存在しません。

続いて「run apt-get updateするか--fix-missingオプションつけてやってみて」みたいなことが書いてあります。
とりあえずapt-get updateを試してみることにします。

手順

最後のエラーメッセージにworkspaceのビルドの際に下記のコマンドで失敗してるとあります。

'/bin/sh -c if [ ${INSTALL_PHPREDIS} = true ]; then     apt-get install -yqq php-redis ;fi' returned a non-zero code: 100

なので今回はこの上記の箇所にapt-get updateを足してみることにします。

上記の箇所ってどこ?

Dockerではコンテナ起動時にDockerfileの内容に従ってビルドを行います。
なのでworkspaceDockerfileを探します。

# カレントディレクトリを確認
$ pwd
# laradockディレクトリ内であることを確認
# 私の場合 → /Users/ユーザー名/Docker/project_name/laradock

# ディレクトリ内のリストを表示
$ ls
DOCUMENTATION       ide-codiad      nginx
LICENSE         ide-icecoder        percona
adminer         ide-theia       php-fpm
aerospike       ide-webide      php-worker
apache2         ipython         phpmyadmin
aws-eb-cli      jenkins         portainer
beanstalkd      jupyterhub      postgres
beanstalkd-console  kibana          postgres-postgis
caddy           laravel-echo-server rabbitmq
cassandra       laravel-horizon     redis
certbot         logs            redis-cluster
couchdb         logstash        redis-webui
docker-compose.sync.yml maildev         rethinkdb
docker-compose.yml  mailhog         selenium
docker-registry     manticore       solr
docker-sync.yml     mariadb         sonarqube
docker-web-ui       memcached       sync.sh
elasticsearch       minio           thumbor
env-example     mongo           traefik
gitlab          mongo-webui     travis-build.sh
grafana         mosquitto       varnish
graylog         mssql           'workspace'
haproxy         mysql           zookeeper
hhvm            neo4j

# workspaceがあるのを確認 ※わざとハイライトにしています

# workspaceへ移動
$ cd workspace

# workspace内のリストを表示
$ ls
'Dockerfile'        composer.json       insecure_id_rsa.pub
aerospike.ini       crontab         mc
aliases.sh      insecure_id_rsa     xdebug.ini
auth.json       insecure_id_rsa.ppk

# Dockerfileがあるのを確認 ※わざとハイライトにしています

# Dockerfileを編集
$ vim Dockerfile

コマンドモードで/[ ${INSTALL_PHPREDIS} = true ]などとして該当箇所を検索します。

Dockerfile
RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
    apt-get install -yqq php-redis \
;fi

# 上記を下記のように書き換える

RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
    apt-get update && \
    apt-get install -yqq php-redis \
;fi

:wqで保存してファイルを閉じます。

dockerを再度起動

laradockディレクトリに戻って再度起動してみます。

$ cd ../ # workspaceディレクトリから一つ上のディレクトリに戻る 

$ docker-compose up -d nginx mysql phpmyadmin

... # 初回起動時はそこそこ時間がかかる

Creating project_name_docker-in-docker_1 ... done
Creating project_name_mysql_1            ... done
Creating project_name_workspace_1        ... done
Creating project_name_phpmyadmin_1       ... done
Creating project_name_php-fpm_1          ... done
Creating project_name_nginx_1            ... done

今度はうまく起動できたようです。

一応dockerコンテナの起動を確認します。

$ docker ps --format "table {{.Names}}"
NAMES
project_name_nginx_1
project_name_php-fpm_1
project_name_phpmyadmin_1
project_name_workspace_1
project_name_mysql_1
project_name_docker-in-docker_1

上記のように表示されればコンテナが起動できています。

お疲れ様でした。

5
2
2

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