投稿

ラベル(Docker)が付いた投稿を表示しています

Windows10に構築したDocker+Laravel開発環境をWSLへ移行する

イメージ
Windows10の環境でDocker+Laravelの環境で開発をしていて、Webレスポンスが非常に遅く開発に支障が出ているため、WSLに移行してかなり改善されたのでその際の手順をまとめます。 githubの設定 SSHの鍵ペアを作成 ファイル名はデフォルト、パスフレーズは無しで秘密鍵と公開鍵のペアを、ssh-keygenコマンドで生成します。 $ cd ~/.ssh $ ssh-keygen 完了すると、以下の2ファイルが生成されます。 ~/.ssh/id_rsa (秘密鍵) ~/.ssh/id_rsa.pub (公開鍵) 公開鍵をgithubへ設定 以下の手順で、id_rsa.pub (公開鍵)の内容をgithubへ設定します。 1. id_rsa.pub (公開鍵)の内容を出力 $ cat ~/.ssh/id_rsa.pub 2. githubへSign in https://github.com/login 3. New SSH Key Settings -> SSH and GPG keys -> New SSH Key をクリック 4. SSH Key 設定内容 以下のように設定して、Add SSH Keyをクリック Title 任意のタイトル Key type Authentication Key Key 1で出力したid_rsa.pub (公開鍵) を貼りつける 以下のように一覧に追加されればOK ソースコードをcloneする ここまでの作業で、WSL内でgithubを利用する準備が整ったので、githubからソースコードをcloneします。 $ git clone git@github.com:s-watanabe-apps/laravel-project-test.git なお、この時cloneするリポジトリのリンクは、githubで任意のリポジトリを開き、Code -> SSH の順にクリックして確認できます。 動作確認① この時点でDocker Desktopが実行されていれば、コンテナを立ち上げることが出来ます。 $ docker-compose up -d Starting laravel-project

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

いつものように docker-compose コマンドでコンテナを起動し作業しようとしたところ、件名のエラーが発生するようになりました。 特に何も構成等を変更した覚えはないのですが、調査・復旧したので対応した内容をまとめておきます。 環境、バージョン等 $ cat /etc/issue Ubuntu 20.04.3 LTS \n \l $ docker --version Docker version 20.10.8, build 3967b7d $ docker-compose --version docker-compose version 1.26.0, build d4451659 発生事象 コンテナを起動する docker-compose up -d でコンテナを起動します。 $ docker-compose up -d Pulling mysql (mysql:5.7)... ERROR: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host 「プロキシーサーバーが見つからない」と言われているようですが、全く見に覚えがありませんでした。 テスト用Dockerプロジェクトで試す 以前の記事 で紹介したテスト用プロジェクトでも一応試したましたが同様のエラーでした。 $ docker-compose up -d Pulling web (nginx:alpine)... ERROR: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host Docker ログイン Dockerへのログインを試したところ、こちらも同様のエラーが出ました。 $ docker login Authenticating with existing credentials... Login did not succeed, error: Error response from daemon: G

docker-compose で起動したweb、MySQLに接続できない事象

イメージ
概要 以前作成したPHP + MySQL + LaravelのDockerプロジェクトがコンテナを立ち上げても画面にアクセスできなくなってしまったときの解決方法です。 以前の記事は以下です。 【Laravel + MySQL】Dockerで開発環境を作る https://www.s-watanabe.work/2020/12/laravel-mysqldocker.html 発生事象 コンテナを起動 $ docker-compose up -d Starting laravel-project_mysql_1 ... done Starting laravel-project_app_1 ... done Starting laravel-project_web_1 ... done ブラウザでアクセス いつものようにブラウザでアクセスしますが接続できません。 http://localhost:8000 ※この時Docker側のログには何も出力されません。 MySQLへ接続 MySQLも確認してみましたが同じく接続できなくなりました。 $ mysql -h 127.0.0.1 -u user -ppassword -D test mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2 調査・確認 まず以下の記事を参考に新規のDockerプロジェクトが起動・接続できるかを確認しました。 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ja # docker-compose はインストール済み $ docker-compose --version docker-compose version 1.26.0, build d

【Laravel + MySQL】Dockerで開発環境を作る

イメージ
Docker、docker-compose.yml を利用して次の開発環境を作成する手順をまとめました。 WEBサーバー nginx:1.15.6 データベース mysql 5.7 アプリケーション php 7.2 フレームワーク laravel 6.2 構成について まずプロジェクト全体の構成は以下のようになっています。 . ├── docker │   ├── mysql │   │   └── my.cnf │   ├── php │   │   └── Dockerfile │   └── web │   └── default.conf ├── docker-compose.yml └── laravel-app 基本的には docker-compose.yml を用いてビルドしますが、PHPのみDockerfileを使います。 ※後に記載しますが、pdo_mysqlをコンテナにセットアップしたいためです。(これが分からなくて少し嵌りました。) 各ファイルについての詳細 Docker Compose docker-compose.yml docker-compose.yml の内容は以下です。 version: '3' services: web: image: nginx:1.15.6 ports: - '8000:80' depends_on: - app volumes: - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html app: build: ./docker/php volumes: - .:/var/www/html depends_on: - mysql mysql: image: mysql:5.7 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci environment:

【Laravel + Docker】migration で could not find driver が出たときの対応

イメージ
Laravel + Dockerの環境を構築し、Laravel導入時から入っているmigrationを実行したところ could not find driver が出てデータベース接続に失敗したのでその際の解決方法をまとめます。 なお、データベースはDockerコンテナにMySQLを作成しています。 環境について Docker docker-compose.yml 環境はウェブサーバー、PHP、データベースでそれぞれコンテナを立てています。 version: '3' services: web: image: nginx:1.15.6 ports: - "8000:80" depends_on: - app volumes: - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html app: image: php:7.3-fpm depends_on: - mysql volumes: - .:/var/www/html mysql: image: mysql:5.7 environment: MYSQL_DATABASE: test MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql volumes: mysql-data: migrationエラーについて セットアップ時に入っているmigration Laravelにはセットアップした段階で以下のように3つのmigrationファイルが入っているのでこれを実行してみます。 migrationを実行する $ php artisan migrate --seed Illuminat