Dockerでlocalhostにアクセスできない時に解決した方法。

Dockerの練習をしようと思いnginxをupして、ブラウザ確認したいってなったんですが、localhostで開けませんでした😭

調べてみると私はDocker Toolbox(※現在非推奨)を使っていたため、192.168.99.100ではアクセスできました⚡️

(※Docker Toolboxは非推奨のため、Docker Desktopを使ってとのこと)

Docker Toolbox has been deprecated and is no longer in active development. Please use Docker Desktop instead. See Docker Desktop for Mac and Docker Desktop for Windows.

 

localhostでは、

$ curl localhost
curl: (7) Failed to connect to localhost port 80: Connection refused

でした。

TerminalとDocker Desktop for Macが同期されていない状態でした。Docker ToolboxはVMを立てる方法で、Docker Desktop for Macはlocalhostを使う為こうなったみたいです。

そこで、Docker Toolboxを削除し、Docker Desktop for Macを入れ直すことで、TerminalとDocker Desktop for Macが同期されlocalhostでアクセスできるようになりました🙌🙌🙌

(Docker Desktop と Docker Toolbox の共存は可能のようですが、Docker Toolboxは非推奨なのでアンインストールしました。)

参考:

https://docs.docker.com/docker-for-windows/docker-toolbox/
https://qiita.com/amuyikam/items/ef3f8e8e25c557f68f6a
https://docs.docker.jp/docker-for-mac/docker-toolbox.html

 

Docker Toolboxを使っている時

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER      ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v19.03.12
$ docker-machine config default
--tlsverify
--tlscacert="/Users/watashi/.docker/machine/machines/default/ca.pem"
--tlscert="/Users/watashi/.docker/machine/machines/default/cert.pem"
--tlskey="/Users/watashi/.docker/machine/machines/default/key.pem"
-H=tcp://192.168.99.100:2376
$ env | grep DOCKER
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_MACHINE_NAME=default
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/Users/watashi/.docker/machine/machines/default
$ curl http://192.168.99.100/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

 

Docker Desktop for Macを使っている時

Docker Toolboxを削除し、Docker Desktop for Macを入れ直しました。
docker-machineコマンドを削除したので…

$ docker-machine ls
-bash: docker-machine: command not found
$ env | grep DOCKER
# なし

おまけ: 調査で使ったコマンド

ポートが開いてるプロセスの確認

$ lsof -i -P | grep localhost
$ lsof -i -P | grep 192.168.99.100

Laravel環境構築してみる!

話題のこの本、
「PHPフレームワーク Laravel Webアプリケーション開発」読んでます!
まだ読み途中ですが・・・。
今回は最初の「環境構築」部分を自分なりにまとめたこと描きます。

Github

環境構築のパターン

  1. VagrantでLaravel環境構築
  2. DockerでLaravel環境構築

二つとも、Macでやります!

1. VagrantでLaravel環境構築

■事前準備
・VirtualBoxのインスートル
・Vagrantのインスートル

■構築する環境
・ドキュメントルート … /home/vagrant/code/testapp/public
・laravelプロジェクトdir … /home/vagrant/code/testapp
・共有dir … /home/vagrant/code = /home/(ユーザdir)/code

■手順

$ cd  /*(user_dir)に移動する*/

$ vagrant box add laravel/homestead

$ git clone git@github.com:laravel/homestead.git Homestead

$ cd Homestead/

# 初期化
$ sh ./init.sh

# ゲストOSの設定ファイル調整
$ vi Homestead.yaml  /* ip、sites、authorize、keyの設定 */

# hosts設定 「192.168.10.10 homestead.test」
$ vi /etc/host  /* Homestead.yamlに合わせてip設定する */

$ cd /*(user_dir)に移動する*/

# ゲストOSとホストOSの共有dir先を作成 
# /home/vagrant/code = /home/(ユーザdir)/code
$ mkdir code/

$ cd Homestead/

# 調整し直したHomestead.yamlの設定でvagrantで環境を立てる 
$ vagrant up

# sshでゲストOSに入る
$ vagrant ssh

# ここからゲストOSにいる
$ cd code/

$ composer create-project laravel/laravel testapp --prefer-dist "5.5.*"

http://homestead.test/
にアクセスするとlaravelのページにアクセスできることを確認!完成\(^^)/

■つまったところ
・何回も作りなお直してたら、もうあるってめちゃ言われました。(以下参照)

The box you're attempting to add already exists. Remove it before
adding it again or add it with the `--force` flag.

Name: laravel/homestead
Provider: virtualbox
Version: 6.3.0

そんなときの対処方法
・その壱

$ vagrant global-status /* 動いてるやつの確認 */
$ vagrant global-status --prune /* 何も出てこない時はこっち */
$ vagrant destroy homestead-7 /* 「homestead-7」を指定してdestroy */

・その弐

$ cd ~/.vagrant.d/boxes/
$ ll
$ rm -rf {target}

2. DockerでLaravel環境構築

■事前準備
・Dockerのインスートール

■構築する環境
・ドキュメントルート … /var/www/public
・laravelプロジェクトdir … /var/www/
・共有dir … /var/www = /home/(ユーザdir)/laravel_docker/testapp

■手順

$ cd

$ mkdir laravel_docker

$ cd laravel_docker

$ git clone https://github.com/laradock/laradock.git

$ cd laradock

$ cp env-example .env

# コンテナ起動(初期化)
$ docker-compose up -d nginx mysql workspace phpmyadmin

# 起動中のコンテナ一覧の確認。各コンテナが起動(up)していることを確認
$ docker-compose ps

# ゲストOSに入る
$ docker-compose exec --user=laradock workspace bash

# testappという名前でlaravelをいれる。
$ composer create-project laravel/laravel testapp --prefer-dist "5.5.*" 

# ゲストOSからでる。
$ exit

# laradock/.envの調整。「APP_CODE_PATH_HOST=../testapp」に書き換える
# /var/www = (user_dir)/laravel_docker/testapp にさせるために!
$ vi .env

# コンテナ一旦シャットダウン
$ docker-compose stop
 
# コンテナ起動。再起動により.envが反映されます。
$ docker-compose up -d nginx mysql

http://localhostでアクセスすると、
laravelのデフォ画面がでるはずです!完成^^

この本ですが
内容はとても親切丁寧なので読みやすいです!
ADRの話なども書いてあって、私には難しいですが頑張れそうです!
もっと読んだらまた記事書きまうす。