5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?