MinEMemO
🏷️「Docker 」Tag 記事一覧(14 posts)
【Docker】【260606】#4 Laravelの初回起動、F5更新が遅い場合はWSLのUbuntu内にファイルを置く

2026-06-12

はじめに WindowsのHDDにPJファイルがある場合にlocalhostのロードが遅くなります。 だいたいこんな感覚 立ち上げの表示は5秒以上 通常のF5更新2~3秒 ちょっと遅いし、Ubuntu(Linux)に置くことで改行問題もそもそも起こらないと思うので、PJファイルはLinux内に置くことにしました。 読み込みの流れのイメージ(Windows内) ↓遅い WindowsローカルPC HDD↓Docker↓WSL2↓Linuxコンテナ↓PHP 読み込みの流れのイメージ(Ubuntu(Linux)内) PJファイルをWSL2の中に置いて、以下のように変えます。 全てLinuxになることで早くなる。 Ubuntu(Linux) 仮想ディスク↓Docker↓WSL2↓Linuxコンテナ↓PHP 設定方法 WSL確認 ローカルPCのエクスプローラーに以下を入力し、フォルダが表示される確認 \\wsl$\ WSLに何が入ってる確認 PowerShellで以下を実行 wsl -l -v 私の場合起動中の Docker のみが表示されました NAME STATE VERSION* docker-desktop Running 2 ファイルを置くためにUbuntuをインストール コマンドプロンプトはPowerShellでやっていきます。 wsl --install -d Ubuntu WSL2はWindows上でLinuxを動かすための仕組みです。 WSL2だけでは通常の作業用Linux環境は存在しません。 ファイルを置いて開発するLinux環境を作るために、UbuntuなどのLinuxディストリビューションをインストールします。 Ubuntuのインストール設定 コマンド実行後に、以下が表示されます。 ディストリビューションが正常にインストールされました。'wsl.exe -d Ubuntu' を使用して起動できますUbuntu を起動しています...Provisioning the new WSL instance UbuntuThis might take a while...Create a default Unix user account: ユーザ名入力 「Create a default Unix user account:」 にユーザ名を入力してEnterを押します。 ※Ubuntu内で使うLinuxユーザー名です。 自分が分かりやすい短い英小文字にすると扱いやすいです。 パスワード入力 「New password:」 ↓ 「Retype new password:」 Ubuntu内でsudoコマンドを使う時に入力するパスワードです。 ここも自分がわかりやすいものでOK Ubuntuへの情報共有許可 Help us improve Ubuntu features and compatibility by sharing system reports with Canonical.Reports are sent anonymously and do not contain any personal data.For legal details, please visit: https://ubuntu.com/legal/systems-information-noticeWe will save your answer to Windows and will only ask you once.Would you like to opt-in to platform metrics collection (Y/n)? To see an example of the data collected, enter 'e'.[Y/n/e]: y 任意で好きなものにしてください。 無駄を省きたい場合は n が多いです。 完了 「ユーザー名@コンピュータ名」が表示される PJをWindowsからUbuntu内に移動 Ubuntu内でコマンドでしていきます。 ルートに移動 cd ~ パス確認 pwd 私の場合こうなります tm@pc240127:~$ pwd/home/tm PJファイルをコピーして移動 cp -r /mnt/Windowに置いてあるPJファイルのパス ~ルートに配置するPJのフォルダ名 co -r :再帰的にコピーするmnt:UbuntuからWindowsを参照してる状態 コピー確認 ls ~ これでコピーしたフォルダが表示されるか確認。 ※無事にできたら、Windows内の元ファイルは消した方が今後紛らわしくないかもしれません。 DockerコマンドをUbuntuで出来るようにする設定 Dockerデスクトップアプリを開く 右上の ⚙ を押して設定を開く Resources > WSL Integration を開く 「Enable integration with my default WSL distro」にチェック UbuntuのスイッチをONにする 「Apply & restart」をクリック 画像 UbuntuでDockerコマンドが動くか確認 Ubuntuのターミナル起動 VS CODEのターミナルに「Ubuntu(WSL)」があるのでそれを選択し、Ubuntuのターミナルを開く プロジェクトフォルダに移動 Ubuntu内のプロジェクトフォルダ(ymlがある場所) cd ~/プロジェクトのフォルダ名 ※ 私の場合です。各自おいてる場所に移動してください Dockerコマンド動かす docker compose up -d 「permission denied while trying to connect to the docker API」 のようなエラーが出たら、権限問題なので以下のコマンドで作成したubuntuのユーザに権限を付与します。 sudo usermod -aG docker $USER 例)私の場合 sudo usermod -aG docker tm このあとパスワード入力して、Ubuntuのターミナルを再起動して再度Dockerコマンド実行で成功するはずです。 補足:開発環境の起動について 普段は以下の流れで起動しています。 Ubuntuのターミナル起動 VS CODEのターミナルに「Ubuntu(WSL)」があるのでそれを選択し、Ubuntuのターミナルを開く プロジェクトフォルダに移動 Ubuntu内のプロジェクトフォルダ(ymlがある場所) cd ~/プロジェクトのフォルダ名 Dev Containerで起動 普段の開発時のVS CODEでのPJの開き方 ※ 「WSL拡張機能 + code .」 で開くと、Ubuntu側にPHPを入れていない場合、PHP拡張機能の警告が出ます。 今回はPHPやComposerはDockerコンテナ内に統一したいので、Dev Containerで開く運用にしました。 さいごに なんか早くしたいだけだったのに結構理解するのは大変。 結局でも仕事だとこういうことは必要になる。 あとLinuxのフォルダは🐧アイコンでエクスプローラに表示されますが、VS CODEからワークスペース追加の時に、エクスプローラーに表示されてなかったりとわかりづらいときあります。
【Docker】【260607】#3 Laravel開発 Windows環境の改行コードの対応

2026-06-11

はじめに 今回はPJ直下にdocker系のファイル、src配下にLaravelファイルがありました。 コンテナで開いたタイミングでdocker系のファイルに予期せぬ改行コードの変換更新が入ることがあったので以下の対応を行いました。 WSL2のUbuntu内にPJファイルを置いてる場合、そもそも改行の問題は起きないと思います。 参考までに。 【Docker】【260606】#4 Laravelの初回起動、F5更新が遅い場合はWSLのUbuntu内にファイルを置く 環境想定 Nginx 1.30.2 Stable PHP 8.5.6 最新 Composer:2.10.1 LTS Laravel 13.14.0 最新 MySQL 8.4.9 LTS Git 最新 ※バージョンは安全のため固定します ※26/06時点 フォルダ構造 以下のような構造でローカルに作業フォルダ、ファイルを作成します Laravel13_sample├─ docker│ ├─ mysql│ │ └─ my.cnf│ ├─ nginx│ │ └─ default.conf│ └─ php│ ├─ Dockerfile│ └─ php.ini├─ src├─ docker-compose.yml ※srcにLaravelが入る ※Docker環境の var/www 内に丸ごとこれを格納し開発を進める (.gitがここのあるのでDocker、Laravel丸ごと状態管理するため) Git管理するテキストファイルの改行コードをLFで管理する PJの直下に .gitattributes を作成 # Git管理するテキストファイルの改行コードをLFで管理する## text=auto:テキスト or バイナリを判断して、テキストなら改行コードを変換する# eol=lf:改行コードをLFで管理する## PJ直下のDockerファイルの改行コードもLFで管理するため追加した#(コンテナ内で予期せぬ更新が発生するときがあった。Windows環境の問題(CRLF))* text=auto eol=lf Git自体の改行コードの変換設定を input に変更 設定方法 ローカルのGitで以下のコマンドを実行 git config --global core.autocrlf input 変更後の確認方法 これで確認し、inputになってればOK git config --global core.autocrlf 補足 ※ローカルのGitが対象 ※コンテナ内は通常LF環境のため、core.autocrlfの設定は不要 ※Laravel・Docker開発ではLFで統一する方が扱いやすい 【Git/GitHub】改行コードCRLFとLFの混在について VS CODEの改行コードもLFで制御しておく これは念のためレベルだと思います。 PJの直下に「.vscode/settings.json」を作成する { "files.eol": "\n" } さいごに Windows環境よくわからないことおこるので、Linux環境(MacやLinux OS)が好まれるんですね・・
【Docker】【260607】#2 Laravel開発環境構築ファイル作成 & 起動

2026-06-07

はじめに 26年時点で手順がかなり変わってたので、過去記事を丸々書き直しました。 過去記事はこちら https://minememo.work/posts/docker3/ 私自身は本番のインフラ設定には詳しくありません。 とりあえず調べつつ動くものを記載しています。 なお、Dockerはインストール済み前提なのでまだの場合は以下の記事を参照してください。 そんなに難しないです。 [【Docker】【260606】#1 Docker Desktopインストール] ( https://minememo.work/posts/docker_260606_01/ ) 環境想定 Nginx 1.30.2 Stable PHP 8.5.6 最新 Composer:2.10.1 LTS Laravel 13.14.0 最新 MySQL 8.4.9 LTS Git 最新 ※バージョンは安全のため固定します ※26/06時点 nginx https://nginx.org/en/download.html PHPサポート期間 https://www.php.net/supported-versions.php PHPリリース https://www.php.net/releases/index.php Composer https://getcomposer.org/download/ Laravelリリースノート https://laravel.com/docs/13.x/releases Laravel細かいバージョンリリース一覧 https://laravelversions.com/ja/13 MySQL https://dev.mysql.com/downloads/mysql/8.4.html フォルダ構造 以下のような構造でローカルに作業フォルダ、ファイルを作成します Laravel13_sample├─ docker│ ├─ mysql│ │ └─ my.cnf│ ├─ nginx│ │ └─ default.conf│ └─ php│ ├─ Dockerfile│ └─ php.ini├─ src├─ docker-compose.yml ※srcにLaravelが入る ※Docker環境の var/www 内に丸ごとこれを格納し開発を進める (.gitがここのあるのでDocker、Laravel丸ごと状態管理するため) localhost http://localhost:8080/ 開発環境構築ファイル作成 ymlファイルを作成 Docker全体の設定管理ファイル Laravel13_sample\docker-compose.yml https://github.com/tm-qc/laravel13-docker-sample/blob/main/docker-compose.yml PHP Dockerファイル作成 docker\php\Dockerfile https://github.com/tm-qc/laravel13-docker-sample/blob/main/docker/php/Dockerfile nginx設定ファイル docker\nginx\default.conf https://github.com/tm-qc/laravel13-docker-sample/blob/main/docker/nginx/default.conf おまけファイル 以下のファイルは今後設定したいときに使う。 今は記載なしです。 MySQL設定:docker\mysql\my.cnf PHP設定:docker\php\php.ini Laravelインストール 一旦コンテナビルド docker compose build src配下にLaravel生成 docker compose run --rm app composer create-project laravel/laravel:13.14.0 /var/www ※時間かかるので完了まで待つ 起動 一旦ここではDockerでlocalhostが開き、LaravelのTOPページが開くかの確認になります。 作業フォルダに移動 cd "docker-compose.ymlがあるフォルダのパス" Docker Desktopを起動 PCでアプリ起動 コンテナ起動 docker compose up -d 下段の「初回起動時のみの作業」を行ったことがない場合は「docker compose up」の後に作業してください 表示確認 http://localhost:8080 Laravel13 Welcomeページ コンテナ終了 docker compose down 初回起動時のみの作業 コンテナ起動後に以下を行う Laravel の APP_KEY作成(アプリケーション全体の秘密鍵) コンテナ内でコマンドプロンプト起動 docker compose exec app bash ※今回はPHPのDockerfileの作業フォルダ「/var/www」= appなのでそこで起動になる ※ymlの「working_dir: /var/www」も同じ設定になってる APP_KEY作成 php artisan key:generate ※「Application key set successfully」が出れば成功 ここで今回はエラーになりました 「ls -la」でフォルダ構造確認し Laravel がなければ、PC の src フォルダを削除して空にし、 bashじゃなくPowerShellでLaravelをインストールし直してください。 インストールし直してコンテナ内にLaravelがあれば成功です。 ※Git Bashのパス変換バグで「C:」とかになるときがあるらしいのでPowerShellで対応します。 docker compose exec app bash LaravelにDB接続設定 .env ※開発用 ※docker-compose.ymlの設定に合わせる DB_CONNECTION=mysqlDB_HOST=dbDB_PORT=3306DB_DATABASE=laravelDB_USERNAME=laravelDB_PASSWORD=password マイグレーション php artisan migrate ※コンテナ内のコマンドプロントで行う 普段の開発時のVS CODEでのPJの開き方 VS CODEでローカルPC(自分のPC環境)のフォルダを開くのではなく、Dockerコンテナを立ち上げて、その環境のVS CODEでファイルを参照し、修正するようにしたほうが良いです。   フォルダから参照してる場合 PHPがコンテナ内で動いてる ローカルPCはPHP自体はなくファイルがあるだけ という状態のため、VS CODEの拡張機能が動かなかったりして不便なことが起きます。 最初はコンテナ内とローカルPC内の違いがしっくりこないかもしれませんが、 Dockerのコンテナ内にPHP環境作ってる 自分のPC内でPHPにはないから拡張機能が動かない 双方は別の世界 と一旦思っておくくらいが良いです。 WSL2のUbuntu内にPJファイルを置いてる場合は、拡張機能 WSLを使って、Dev Containersを使わず code . でも開けますが、結局PHPがなく拡張機能が動かないので、Dev Containersで開くようにしています。 VS CODE の拡張機能 Dev Containersがある確認 無ければインストール Dev Containers コンテナ起動 docker compose up -d WSL2のUbuntu内にPJファイルを置いてる場合は、Ubuntu(WSL) というターミナルをVS CODEで開いて実行してください。 通常のターミナルで起動すると、Ubuntu内のPJファイルじゃなく、結局Windows内のファイルを見ることになるので、読み込みが早くなる恩恵がなくなります。 【Docker】【260606】#4 Laravelの初回起動、F5更新が遅い場合はWSLのUbuntu内にファイルを置く VS CODE左下 >< 見たいなアイコンをクリック 画像 「実行中のコンテナにアタッチ」を選択 画像 いくつか表示されるので Laravel のサービスを選択 今回は laravel_app しています。 VS CODEがもう一個起動します。 画像 ワークスペースで作業フォルダを開く 今回は /var/www 内にGit管理されてるPJがあるのでそれを開きます。 画像 これで作業環境の立ち上げはOKです。 補足ですが、ローカルにしかない拡張機能は画像のように、「コンテナ・・・」という青いボタンがあるので、このボタンを押して再インストールしてください。 コンテナ内の環境の VS CODE なので、再インストールが必要です。 画像 PHPデバッグ XdebugはDockerでインストール済みです。 以下の設定を追加すれば、VS CODEでブレイクポイントなどが使えるようになります。 vs codeのプラグイン「PHP Debug」をインストール VS CodeのXdebug設定ファイルを作成 /.vscode/launch.json https://github.com/tm-qc/laravel13-docker-sample/blob/main/.vscode/launch.json Xdebugの設定ファイルを作成 /docker/php/xdebug.ini https://github.com/tm-qc/laravel13-docker-sample/blob/main/docker/php/xdebug.ini Windows環境の改行コード対応 今回はPJ直下にdocker系のファイル、src配下にLaravelファイルがありました。 コンテナで開いたタイミングでdocker系のファイルに予期せぬ改行コードの変換更新が入ることがあったので以下の対応を行いました。 【Docker】【260607】#3 Laravel開発 Windows環境の改行コードの対応 補足 バージョン確認方法 環境構築後の確認方法 コンテナ起動 docker compose up -d nginxバージョン確認 docker-compose exec nginx nginx -v PHPバージョン確認 docker-compose exec app php -v Composerバージョン確認 docker-compose exec app composer -v インストール済の拡張機能の一覧 docker-compose exec app php -m Laravelのバージョン確認 docker compose exec app php artisan -v DB GUIツール 私はDBeaverを使っています。 今回の設定はポートが3307なので、ツールの接続設定で3307を指定すればつながります。 ※3306がデフォなので、3306で問題ない方は書き換えて使っていただいても大丈夫です。 今回は私がローカルで3306を使っていたので、3307に変更しただけです。 ※MySQL 8で「Public Key Retrieval is not allowed」でつながらないときは、「ドライバのプロパティ」で「allowPublicKeyRetrieval = true」に設定します。 (セキュリティ強化の影響で開発環境なら true でOK) (本番環境だとSSL/TLSを使うので、そもそもallowPublicKeyRetrievalを使わないことが多い) ホットリロード ホットリロードはLaravel / PHP は入っていない。 入れ方もすこし複雑 + フロントしかからないのでF5で更新することも普通とのこと。 ASP.NET COREでは特に意識せずフロント、バックでホットリロード入っていたが、 言語の性質上このような仕様になってるとのこと 今回はReactなどまだ使わずにBlade想定なので、ホットリロードは保留とする。 C#はコンパイル言語 更新監視、再コンパイル・再起動でコード自体更新される PHPはスクリプト言語 コードがそのまま実行されるだけでコンパイルじゃないので、バックはF5更新が必要。 フロントは設定して、Vue/Reactなど両方ともNode.js(Vite)でホットリロードを使うことになる コンテナとローカルのVS CODEの色を変える コンテナ、ローカルと双方でVS CODE開いたときに、どっちかわかりにくいので、色を設定します。 コンテナ内のVS CODEで以下を行う。 Ctrl + Shift + P で設定を開く Preferences: Open Remote Settings を開く settings.jsonにカラー設定を追加する 一番下のステータスバーの背景色 一番下のステータスバーの文字色 一番上のタイトルバーの背景色 一番上のタイトルバーの文字色 { "workbench.colorCustomizations": {"statusBar.background": "#1B5E20","statusBar.foreground": "#FFFFFF","titleBar.activeBackground": "#1B5E20","titleBar.activeForeground": "#FFFFFF"}} ※好きな色でOK Laravelの初回起動、F5更新が遅い場合 【Docker】【260606】#4 Laravelの初回起動、F5更新が遅い場合はWSLのUbuntu内にファイルを置く さいごに Laravelの開発ができるようになりました。 本番のインフラをできるようになりたい・・。
【Docker】【260606】#1 Docker Desktopインストール

2026-06-06

はじめに 26年時点で手順がかなり変わってたので、不足分書き直しました 過去記事はこちら https://minememo.work/posts/docker1/ インストール Learn how to install Docker こちらは公式のインスールマニュアル https://docs.docker.com/desktop/ 最初はDockerを使うためのアプリをインストールしましょう。 このアプリを起動してDockerで仮想環境を起動します。 1.Dockerの公式サイトにアクセス https://www.docker.com/get-started/ 2. Download Docker Desktopをクリック 3. Download for Windows – AMD64 をクリック 私のPCのCPUがintelのCPUだったため、こちらを選びました 4. OKをクリック 画像 少し待つとPC再起動になるので従う 5. 規約確認画面。Acceptをクリック 画像 Docker Desktop アプリが起動します 6. アカウント登録画面 アカウント登録画面。 個人勉強用なら不要。 アカウント登録しない場合は skip で OK。 画像 アカウントが必要になるのは、 Docker Hub にイメージを公開する クラウド連携する チーム利用する といった場合らしいです。 7. WSL(Windows Subsystem for Linux)のアップデート WSLが古い場合のアップデート要請です コマンドプロンプトで「wsl --update」を実行します。時間がかかるので少し待ちます。 アップデート完了後に「Try Again」をクリック 画像 8. 起動確認。インストール完了 画像 さいごに 以前からめっちゃかわってる笑
【Docker】Laravel 9+Laravel Breezeで@viteのCSSが反映しない

2023-05-17

はじめに 以下の組み合わせで、CSSが反映しない状態になりました。 変更しないといけないことが多かったので、反映するまでに変更した部分だけ記載したいと思います。 原因はLaravel 9からViteになったことが主な原因だそうで、そこに対しての調整になります。 Windows PC Docker php 8.1 Laravel 9 Laravel Breeze この記事がなかったらもっと時間がかかっていたと思います。 本当に感謝です。 https://qiita.com/hitotch/items/aa319c49d625c2a9b65e 反映させるのに必要な変更 docker-compose.yml の php 部分 以下追加 docker-compose.yml ports: - 5173:5173 ※追加場所はVolumeの上にしました。 PHPイメージを読み込む Dockerfile 以下追加 Dockerfile EXPOSE 5173 ※追加場所はRUNの上にしました。 Viteの設定ファイル vite.config.js 以下追加 vite.config.js server: { host: true, // ホットリロード(自動更新)がならない場合追加 hmr: { host: 'localhost', }, // CSSの自動反映がならない場合追加(Dockerだと多少時差がでるかも) watch: { usePolling: true, }, }, ※追加場所はpluginsの下にしました。 ※vite.config.jsはLaravel9をインストールしたらLaravelプロジェクトの直下に自動でできるファイルです。 Laravel Breezeインストールやnpm run dev時にnpmエラーが出る場合 PHPイメージを読み込む Dockerfile node.jsのバージョンが古いとダメみたいです。 16.16.0なら大丈夫とのことで、バージョンアップする必要があります。 Dockerfile内の RUN apt-get install の部分でnode.jsのバージョンを指定するようにします。 以下追加 Dockerfile RUN apt-get install -y node.js npm && npm install n -g && n 16.16.0 ※追加場所はRUNの最後にしました。 ※もし既存でnode.jsのインストールしてる場所があれば消してください。 表示の高速化 viteの仕様上 node_modules フォルダや、 vendor フォルダのバインドを除外しないと、ページを表示するたびにロードに時間がかかるそうです。 以下追加した後は、確かに早くなったので、表示が重たい方はぜひ試してみてください。 docker-compose.yml の php 部分 以下追加 docker-compose.yml #app(phpの部分)のvolumeにバインド除外用の設定を追加#重たいものをバインドしないことによって表示が軽くなる#portsの下に書きました。#「名前付きボリューム:コンテナ内のパス」で書くようです。volumes: - ignore_node_modules:/app/node_modules - ignore_vendor:/app/vendor~~~~~省略~~~~~#ファイルの一番下に除外するために使う、名前付きボリュームを定義volumes: ignore_node_modules: ignore_vendor: PHPイメージを読み込む Dockerfile 以下追加 Dockerfile #バインドしないようにしたので、起動する度に npm と composer の install が必要なので、コマンドで自動でインストールさせるようです。 #これがあると、Docker起動後に毎回手動で composer install と npm install をしなくてよくなり npm run dev だけでよくなります。 ENTRYPOINT [ "bash" , "-c" , "composer install; npm install; exec php-fpm" ] ※追加場所はファイルの一番下にしました。 ※筆者の環境ではこれがなくても install なしで npm run dev だけで動いてる気がしてますが、何かあったらまた更新します。 ※npmやcomposerのコマンドはコンテナ内でしてください。(「docker compose exec サービス名 コマンド」を使ってしたらOKです。) さいごに Docker出来てしまえば、共有が簡単なのですが、それまでの道のりが大変・・ CSSの反映だけだったのですが、仕様上重たすぎる問題もあってかなり時間を使いました。
【Docker】よく使うコマンド

2022-10-26

はじめに Dockerで個人的によく使うコマンドを目的別に記載します。 基本的にDockerのコマンドではなく、docker compose のコマンドを利用しています。 最初は**「コンテナ起動~停止」**だけ使えればいいと思います。 自分でDocker構築したり、その他情報がしりたくなったら他のコマンドが必要になる感じです。 どのコマンドも cd で docker-compose.yml があるフォルダに移動して、行うことは共通になります。 別記事でDockerで以下の環境を作成するチュートリアル記事も書いてますので、よかったら見てみてください。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 【Docker】#4 Laravelをコマンドでインストール 【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認 【Docker】#6 LaravelのDB設定、確認 【Docker】#7 phpMyAdmin表示確認 【Docker】#8 できてる環境の確認 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 コンテナ起動~停止 普段一番使うコマンドです。 Dockerの設定ファイルが出来たらあとは環境を起動、停止して開発をすすめるという流れになるので、基本的にこれしか使わなくなります。 ※コマンドじゃなくても、Docker Desktopアプリでもスタート、停止できます。 1.コンテナ起動 以下のコマンドを実行するとコンテナが起動します。 docker-compose up -d ※このコマンドはビルド( docker-compose build )+スタート( docker-compose start )を行っています。 ※ -d はバックグラウンド実行になり、コマンドプロンプトの占有を防ぐためのオプションです docker-compose up 2.コンテナ停止 稼働中のコンテナを停止します。 docker-compose stop ※コンテナの削除はしません。 ※docker-compose start または docker-compose up で再起動できます ちなみに筆者的には stopより down(コンテナ、イメージ削除+停止)が良い と思っています 。 docker-compose down 理由は下の「注意」を参考にしてください。 ■「docker-compose stop」ではなく「docker-compose down」を使う理由 複数の環境を切り替えて使う場合、サービス名やポートの重複、キャッシュなどで、 うまく起動しなくなる場合があります 。 その場合は「docker system prune」で全体のお掃除をして解消も出来ますが、別環境をup(起動)するたびに全てインストールしなおしなので、初回起動時に めちゃくちゃ時間がかかります 。 また、別環境使うときに以前使ってた、もしくは影響してる環境を覚えてない場合は、それを探してdownしないといけなくなります。 なので、筆者としては基本的にstopするときは常に「docker-compose down」を使ったほうが良いと思っています。 docker-compose stop(公式) docker-compose down(ページ内アンカー) 起動しているコンテナの一覧を確認 今起動しているコンテナを確認したい場合は以下のコマンドで確認できます。 docker-compose ps ※コマンドじゃなくても、Docker Desktopアプリでも確認できます。 ※起動していないコンテナも確認したい場合は -a オプションを使います。 docker-compose ps コンテナ内でコマンドを実行したい docker-compose exec サービス名 実行したいコマンド ※このコマンドは docker exec と同じです ※ -it オプションでコンテナの中の環境に入って、対話モードでコマンドできるようにできます。抜けるときはexitでOKです。 例)コンテナ内で bash (コマンドプロンプトの一種)を起動して、MySQLに接続するコマンド $ docker-compose exec DBのサービス名 bash[db]:/$ mysql -u ユーザ名 -p// パスワードを求められるので入力//データベース指定[db] mysql> use database;//テーブル表示[db] mysql> show tables; docker-compose exec イメージからコンテナ(環境)を作り直したい 1.今いるディレクトリに対してイメージ、コンテナの削除 Dockerの設定ファイルを書き直したり、イメージをつくりなおして再度コンテナを起動したい場合は、よく以下のコマンドを使い削除します。 docker-compose down↓docker-compose up -d --build ※ --build:コンテナを開始前にイメージを構築する docker-compose down キャッシュ等でうまく更新できない場合は「docker-compose down --rmi all --remove-orphans」で綺麗にしてから「docker-compose up -d」をすると解決すると思います。 docker-compose down --rmi all --remove-orphans このコマンドを使うことで、Docker内のキャッシュなどの影響で起こるよくわからないエラーなども回避しつつ、再構築ができます。 要約すると以下のことを行います。 今いるディレクトリに対してコンテナ停止、削除、ネットワーク、イメージ、未定義のコンテナを削除してきれいにする 各オプションなどについて↓ docker-compose down は docker-compose up で作成したコンテナとネットワークを停止、削除 –rmi all オプションで全イメージを削除 –remove-orphans オプションでComposeファイルで定義していないサービス用のコンテナも削除 「docker system prune」との違いについて このコマンドはディレクトリ関係なく、使われてないイメージ、コンテナ、ネットワークを削除(prune)するコマンドです。 Docker全体に対するお掃除という感じです。 ■ボリュームについて ※いつか別記事移行するかも… Dockerはメモリ上で動くため、コンテナを削除した時点で作業した内容が消えてしまいます。 そのためボリュームという機能をつかってファイルやDBの情報を永続化し消えないようにします。 主に以下のような用語があります。それぞれ利用します。 ・バインドマウント ローカルのファイルをコンテナ側を同期(マウント)します(=コンテナに変更を自動反映) ※作業ファイルはローカルに残ります 削除タイミングは自分でフォルダを消すときになります。 ・名前付きボリューム DBのデータなどを残したいときに使います。 Docker内で保持されるので、一見するとどこに行ったかわからなくなりますが、Docker Desktop アプリや docker volume ls コマンドで確認できます。 削除タイミングは docker-compose down や docker system prune で ボリュームオプションを指定したタイミング です。 ※匿名ボリュームというのもありますが、基本的に名前付きがつかわれます。 ボリュームの実際の書き方は以下のdocker-compose.ymlのコメントを参考にしてください。 docker-compose.ymlを作成 ボリュームはしれっとたまっていくので定期的にお掃除する必要があります。 作業データがいらなくなったときに、以下どちらを使い用途に応じて削除するといいと思います。 1. 今いるディレクトリに対してコンテナ停止、削除、ネットワーク、イメージ、ボリューム、未定義のコンテナを削除する docker-compose down --rmi all --volumes --remove-orphans 2. ディレクトリ関係なく、起動していない、ボリューム、イメージ、コンテナ、ネットワークを削除(prune)する docker system prune --volumesまたはdocker volume prune 2.コンテナ再起動 docker-compose up -d 【おまけ】その他のコマンド 必要になったときに見てください。 基本は上記の内容で事足りると思います。 コンテナ停止 docker-compose stop コンテナ削除 docker-compose rm ※起動しているコンテナは削除できません コンテナ再起動 docker-compose restart 今あるイメージを確認 docker images ※docker compose ではなく docker のコマンド 対象のイメージを削除 docker rmi イメージ名 or イメージID ※docker compose ではなく docker のコマンド ※コンテナがあるイメージは削除できません ※強制削除もあるが今回はなし docker-compose.ymlで管理されているサービス1つを指定してコマンドを実行する docker-compose run サービス名 コマンド ※ビルド前でも実行可能なコマンド。一時的にコンテナ作成してコマンドを実行できる 例) docker-composeのvolumeでフレームワークのフォルダが事前に必要な場合に 先にフレームワークのインストールだけしておく際などに使える。 フォルダが先にないとエラーが出たりする この記事でLaravelをインストールするときに使ってます。 2.Laravelのインストールコマンドを実行 Docker コンテナの詳細情報確認 docker inspect コンテナ指定 ※docker compose ではなく docker のコマンド ※よくみるのは mount :どこのvolumeをマウントしてるか config:だれがもってるかとか、環境変数とか、Cmdとか network setting:コンテナのUPAddress(ホストからつなげるIP)の確認もできる ※IPは docker-compose ps のコンテナ一覧でみることが多いです イメージの履歴を確認 docker history イメージ名:タグ ※docker compose ではなく docker のコマンド ※他人が作ったイメージの更新履歴を知りたいときに使う Dockerコンテナのログを出力 docker logs コンテナ指定 ※docker compose ではなく docker のコマンド ※アクセスログ、不明な停止の原因を確認した時に使う ※リアルタイム監視でログをだすにはオプション -f を使います。 作業中をリアルタイムで追えるようになります Docker 全体のお掃除 docker system prune ※docker compose ではなく docker のコマンド ディレクトリ関係なく、イメージ、コンテナ、ネットワークを削除(prune)する ボリュームはデフォルトでは削除されないため、–volumes フラグを使う必要があります。 ※使用中のものは消されないのでstopしないといけない ※docker compose ではなく docker のコマンド ※オプション -a 既存のコンテナ~使われていないイメージすべてを削除する なぜかイメージが消えない時はこれ。全部消えるので注意 使用していない Docker オブジェクトの削除(prune) さいごに 正直自分のためのメモでもある!おまけは覚えなくていいし、困ったら見てください。 ちなみにdockerコマンドとdocker-composeコマンドは同じことができるコマンドがあったりするので、好きな方を使うでOKです。
【Docker】#8 出来てる環境の確認

2022-10-25

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第八回目です。 前回はphpMyAdmin表示確認を行いました。 これだけの環境を構築できるものを作成したと思うと、自分よくやった!ってなりますね。 しかもシェアしやすい!! 確認するものは多いですが、やることは楽なので、コマンドになれるついでに確認してみてください。 過去の手順は前回の記事を参考にしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 【Docker】#4 Laravelをコマンドでインストール 【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認 【Docker】#6 LaravelのDB設定、確認 【Docker】#7 phpMyAdmin表示確認 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 現在の作業フォルダ 前回までに作成した以下のフォルダが作業ディレクトリになります。 参考までに記載しておきます。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel    Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql     MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル 1.コンテナを起動し環境を立ち上げる 各コマンドを実行してバージョンなどを確認していきます。 作業前に、Docker Desktopアプリを起動し、「docker-compose up -d」でコンテナを起動し環境を立ち上げておいてください。 分からない場合は前回の記事を参考にしてください。 docker-compose.ymlからコンテナを起動 2.phpのバージョン確認 今回はPHP 8.0.23になっていると思います。 以下を実行し、インストールしたバージョンが返ってきたらOKです。 docker-compose exec php php -v docker-compose exec php php -v について docker-compose execはDockerの仮想環境に対してコマンドを実行するコマンドです。 「docker-compose exec サービス名 実行したいコマンド 」 という風に記載して使います。 サービス名は docker-compese.yml に記載されているサービス名です。 3.Composerのバージョン確認 今回はComposer version 2.4.1になっていると思います。 以下を実行し、インストールしたバージョンが返ってきたらOKです。 docker-compose exec php composer -v 4.gitのバージョン確認 特にバージョン指定はしてないので、以下を実行し、バージョンが返ってきたらOKです。 この記事を作成しているときは git version 2.30.2 が返ってきてました。 docker-compose exec php git --version 5.インストール済の拡張機能の一覧 docker\php\Dockerfile の RUN で install しているパッケージ名が表示されます。 沢山表示されるので、完全には把握してませんが、install部分に記載されているパッケージ名があればいいかな。くらいで確認しています。 docker-compose exec php php -m 6.php.iniがコピー出来ているか確認 phpの設定ファイルがコピーできているか確認します。 ローカルからコピーされた、コンテナにあるphp.iniの内容が表示されればOKです。 1.phpのコンテナ内でbashを起動 phpのコンテナ内でコマンドを実行できるようにします。 docker-compose exec php bash 2.catコマンドでコンテナ内のphp.iniを表示 cat /usr/local/etc/php/php.ini 7.nginxのバージョン確認 今回はnginx/1.22.0になっていると思います。 以下を実行し、インストールしたバージョンが返ってきたらOKです。 docker-compose exec nginx nginx -v 8.mysqlのバージョンを確認 今回はmysql Ver 8.0.30になっていると思います。 以下を実行し、インストールしたバージョンが返ってきたらOKです。 docker compose exec mysql mysql -V 9.Laravelのバージョン確認 今回はLaravel Framework 6.20.44(PHP 8.0.23 に対する Laravel6 の最新)になっていると思います。 以下を実行し、インストールしたバージョンが返ってきたらOKです。 docker compose exec php php artisan -v 10.phpmyadminのバージョン確認 phpMyAdminのTOPページ(HOME)でバージョン情報を確認できます。 アクセス方法は「 【Docker】#7 phpMyAdmin表示確認 」を参考にしてください。 latestなので、最新が入るようになっています。 11.nodejsのバージョンを確認 docker\php\Dockerfile の apt-get installでインストールしてますが、バージョン指定していません。 安定版の最新が入ると思いますが、詳細は個々で確認をお願いします。 記事作成時点では 7.5.2 になっていました。 docker compose exec php node -v 12.npmのバージョンを確認 docker\php\Dockerfile の apt-get installでインストールしてますが、バージョン指定していません。 安定版の最新が入ると思いますが、詳細は個々で確認をお願いします。 記事作成時点では v12.22.12 になっていました。 docker compose exec php npm -v さいごに 本シリーズはこれで完了です。 本当にお疲れ様でした。 私自身もまだすべてを把握しているわけではないですが、特に問題なく使えています。 いきなりすべて把握するのは難しいので、分かる範囲で動かして検証しながら、知識を深めるようにしています。 後日、よく使うDockerコマンドの記事を書けたらいいなと思っています。 皆さまがうまくいくことを祈っています。 ローカル環境つくって、シェアするだけでもこんなに大変なので、本当エンジニアの労働環境、待遇が日本全体で見直されますように…!( ;∀;) エンジニア問わず技術職の待遇を見直さないと日本は終わると思います・・・ 特にアニメやゲーム!エンタメ大事です( ;∀;)
【Docker】#7 phpMyAdmin表示確認

2022-10-24

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第七回目です。 前回はLaravelのDB設定、動作確認を行いました。 過去の手順は前回の記事を参考にしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 【Docker】#4 Laravelをコマンドでインストール 【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認 【Docker】#6 LaravelのDB設定、確認 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 現在の作業フォルダ 前回までに作成した以下のフォルダが作業ディレクトリになります。 参考までに記載しておきます。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel    Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql     MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル 1.phpMyAdmin表示確認 今回は以下のURLにアクセスし、phpMyAdminが表示できればOKです。 http://localhost:8080/ ログイン情報は以下の通りです。 ユーザ名:root パスワード:password この値は docker-compose.yml のサービス名 phpmyadminの PMA_USER 、PMA_PASSWORD に設定されてる値になります。 アクセスする前に… 前回同様 docker-compose up -d をしてコンテナを起動し環境を立ち上げておいてください。 分からない場合は前回の記事を参考にしてください。 docker-compose.ymlからコンテナを起動 「接続できません。設定が無効です。」みたいなエラーがでた場合 キャッシュの影響などでうまくいかないことがあります。 そういったときは以下のコマンドを実行する事で解決できます。 イメージの更新が反映しない時などもこちらで解決することが多いです。 1. Docker内で現在起動してない、イメージ、コンテナ、ネットワーク、キャッシュを削除(prune)する docker system prune 2. 再度環境を起動する docker-compose up -d なぜ8080? docker-compose.yml の サービス名 phpmyadmin の ports を 8080:80と記載しているからです。 コンテナの80番ポートをローカルの8080番ポートで表示するという意味になります。(ポートフォワーディング) ちなみに8080の部分は使われていないポート番号であれば、なんでも大丈夫です。 さいごに 今回はこれで完了です。 次回は8!いよいよ最後!「出来てる環境の確認」を行います。 本シリーズの全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 自分でなんとか勉強して、実践してまとめてきましたが、なかなか難しいですよね。 わからないときも焦らずにやるのが大事だと思います。 無理せずに頑張っていきましょう
【Docker】#6 LaravelのDB設定、確認

2022-10-22

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第六回目です。 前回Laravelの表示確認ができたので、次はLaravelのDB設定、確認を行います。 過去の手順は前回の記事を参考にしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 【Docker】#4 Laravelをコマンドでインストール 【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 現在の作業フォルダ 前回までに作成した以下のフォルダが作業ディレクトリになります。 参考までに記載しておきます。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel    Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql     MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル 1.Laravelの設定ファイルでMySQLの設定値を変更する LaravelのTOPにある「.env」ファイルを開き以下の値を各変数に設定してください 念のため例として1を書くと「DB_HOST=mysql」という風になります。 1.DB_HOST mysql ※docker-compese.ymlのDBのサービス名。今回はmysqlになります。 ※dockerで立ち上げてるのでdocker-compese.ymlのDBのサービス名が自動でコンテナの内部IPに変換されてつながる仕組みです 2.DB_DATABASE database ※docker-compese.ymlのMYSQL_DATABASEで設定した値です。 3.DB_USERNAME user ※docker-compese.ymlのMYSQL_USERで設定した値です 4.DB_PASSWORD password ※docker-compese.ymlのMYSQL_PASSWORDで設定した値です。 2.LaravelでDBに繋がるか確認 Dockerのコマンドでコンテナの中に入り、その中でLaravelのコマンド実行し、DBが動いているか確認します。 1.コンテナ内のLaravelにコマンドではいる docker exec -it php bash ※bashを起動します ※ -it はインタラクティブモード(対話モード)で動かすオプションです 2.php artisan migrateが動くか確認 php artisan migrateはDB操作のLaravelのコマンドです。 なので、これでエラーが出なければOKということになります。 1.テーブル生成 php artisan migrate 2. テーブル削除 php artisan migrate:rollback さいごに 今回はこれで完了です。 次回は7「phpMyAdmin表示確認」を行います。 全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 ようやく終わりが近づいてきましたね。 作ってしまうときだけの手順なので、ぜひ最後まで頑張りましょう! 一回作ってしまえば、運用が簡単にできます!
【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認

2022-10-20

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第五回目です。 dockerでコンテナ(機能)を起動+Laravelの表示確認します。 Dockerfileや各種設定ファイル、そもそもDocker、Laravelのインストールが終わってない方は前回の記事を参考にしてみてください。 [【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール](../ 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 【Docker】#4 Laravelをコマンドでインストール 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 現在の作業フォルダ 前回までに作成した以下のフォルダが作業ディレクトリになります。 参考までに記載しておきます。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel    Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql     MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル 1.docker-compose.ymlからコンテナを起動 1.Docker Desktop アプリを起動 Dockerを使うには、Docker Desktop アプリを起動する必要があります。 アプリを起動してください。 Docker Desktop アプリってなんだっけ?という方は最初の記事を見てみてください。 最初にインストールしたアプリです。 Docker Desktopインストール 2.作業ディレクトリに移動 docker-compose.ymlがあるフォルダにコマンドで移動します。 cd ローカルフォルダのパス 3.Dockerコンテナを起動 Dockerのコンテナを起動し環境起動します。 ※初回はキャッシュがないので時間かかります。 ※ -dはコマンドプロンプトが占有されないように、バックグラウンドで実行するためのオプションです。 docker-compose up -d ■イメージ名の命名規則について 今は分からなくてもよいですが以下のようになっています。 {プロジェクトのフォルダ名}_{サービス名}となり、imageよりbuildのサービス名が優先される イメージ名って何になるんだろ?って思ったときに参考にしてください。 Docker DesktopのImageの画面でも確認ができます。 2.Laravelの表示確認 docker-compese.ymlのportsで指定したポート番号でアクセスします。 今回はnginxのportsで8081:80と記載してるので以下のURLになります。 http://localhost:8081 ■Laravelでパーミッションエラーが出る場合は以下を実行してください。 ・docker-compose exec php chmod -R 0777 bootstrap ・docker-compose exec php chmod -R 0777 storage ※dockerのコンテナ(php)にはいり、パーミッションを変更しています。phpはdocker-compese.yml記載のサービス名のことです。 さいごに 今回はこれで完了です。 次回は6「LaravelのDB設定、確認」を行います。 全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 Dockerはコンテナ?イメージ?Dockerfile?docker-compose.yml?などの役割が頭に入ってくると理解しやすくなりますが、 そこも慣れなので、焦らずにやっていきましょう。
【Docker】#4 Laravelをコマンドでインストール

2022-10-19

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第四回目です。 Laravel 6 をコマンドでインストールします。 Dockerfileや各種設定ファイル、そもそもDockerのインストールが終わってない方は前回の記事を参考にしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 現在の作業フォルダ 前回までに作成した以下のフォルダが作業ディレクトリになります。 参考までに記載しておきます。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel    Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql     MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル Laravelをコマンドでインストール 1.作業ディレクトリに移動 docker-compose.ymlがあるフォルダにコマンドで移動します。 cd ローカルフォルダのパス 2.Laravelのインストールコマンドを実行 LaravelのComposerのcreate-projectコマンドを使いインストールします。 なお、dockerの機能を使って一時的にcomposerが使える状態にしてるので、docker-compose runというコマンドも使っています。 ※そのため先にDockerの設定ファイルは作っておく必要があります。 ちょっと時間かかるのでしばらく待ち、Application key set successfully.が表示されたらインストール完了です。 docker-compose run php composer create-project --prefer-dist laravel/laravel . "6.*" 本当はDockerfileやdocker-compese.ymlで一括で入れたい気もするのですが、ソースがコンテナにしかないとかlocalhostからアクセスできないなどの事象がおこるので、別に入れるようにしています。 インストール先はdocker-compose.ymlのvolumesで設定されたパスになります。 今回はサービス名phpのvolumesの./laravel/:/appになります。 よくわからない時はdocker-compose.ymlを見てみてください。 ※ローカル:./laravel 配下 ※コンテナ:/app 配下 流れとしてはコンテナのapp配下にインストールされたLaravelのファイルがローカルの./laravel 配下にバインド(同期みたいなこと)されるということになります。 ■エラーについて 1.Project directory “フォルダ名” is not empty. Laravelインストール先のフォルダ空じゃないのときに出るエラーです。 2.failed to solve: rpc error: code = Unknown desc Dockerfileなどのインストールにかかわるパスの指定が間違っていないかを確認してください。 さいごに 今回はこれで完了です。 次回は5「dockerでコンテナ(機能)を起動+Laravel表示確認」を行います。 全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 Dockerはコンテナ?イメージ?Dockerfile?docker-compose.yml?などの役割が頭に入ってくると理解しやすくなりますが、 そこも慣れなので、焦らずにやっていきましょう。
【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置

2022-10-13

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第三回目です。 Dockerで環境構築する際に必要な設定ファイルを作成します。 今回は記事的に長くなると思います。 読んで理解できる方は必要なものだけ見てもらってもOKです。 Dockerのインストールやフォルダ作成が終わってない方は、前回の記事を参考にしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 【Docker】#2 ローカル(ホスト)に作業フォルダを作成 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 各機能のDockerfile+設定ファイルを作成 1.前準備 前回docker#2で作成した。 以下のフォルダをベースに作成していきます。 未作成の方は前回の記事を参照して作成してみてください。 前回フォルダを作成したので、今回は★のファイルを作成+設置を行います。 Dockerfileは拡張なしのファイル名「Dockerfile」でOKです。 設定ファイル内のコメントが基本説明になっているので、分からない場合は参考にしてください。 私自身が分かっていない部分もありますが、よろしくお願いします。 nginx_mysql_laravel/    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel     Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── Dockerfile★phpのDockerfile│ │ └── php.ini★php設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── Dockerfile★MySQLのDockerfile│ │ └── my.conf★mysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── Dockerfile★nginxのDockerfile│ │ └── default.conf★nginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadminphpMyAdminのデータが永続化される場所└── docker-compose.yml★全コンテナの一括管理をするDockerの設定ファイル 2.nginxの設定ファイル docker\nginx配下に以下2ファイルを設置します。 1.Dockerfile #nginxのイメージを作成する自作ファイル#Docker Hub公式からPHPのイメージファイルを使用します。#nginxは1.18, 1.20などの偶数バージョンが安定バージョンであり、安定バージョンの使用を推奨されています。#※Alpineでのbashについて# Alpineをベースとすると bash は使えず、 ash や sh は使えるようです。#イメージ名:タグ(version指定)FROM nginx:1.22-alpine#サーバー内の環境変数ENV TZ Asia/Tokyo#nginxの設定ファイル(default.conf)をDockerの仮想環境内のコンテナ内にコピーします。COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf 2.default.conf #nginx設定ファイル#あまり詳しくないので以下の記事から引用させていただきコメント追加しています。#https://qiita.com/hinako_n/items/f15646ea548bcdc8ac6cserver { listen 80; server_name example.com; #ドキュメントルート #localhost:8081でアクセスした場合に表示されるディレクトリ #dockerコンテナのルートに書き換え root /app/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { #FastCGIサーバーのアドレス #FastCGI:Webサーバ上で動くプログラムを一度起動したらしばらく待機させることによって、プログラムの開始と終了にかかる手間を減らし、動きを速くしたりWebサーバの負荷を軽減することができる仕組み #dockerコンテナのphpのポートに書き換え #コンテナ起動後にdocker psで確認したphpのサービスのPORTSが9000/tcpだったので9000になっているっぽい #通常は127.0.0.1:9000に設定されるが、docker-composeはサービス名(今回はphp)にipが自動で振られるのでサービス名にする #参考:https://www.membersedge.co.jp/blog/laravel-development-environment-with-docker-compose/ fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; }} 3.phpの設定ファイル docker\php配下に以下2ファイルを設置します。 1.Dockerfile #PHPのイメージを作成する自作ファイル#Docker Hub公式からPHPのイメージファイルを使用する#Laravel 6はphp8.1対応してないみたいなので8.0で。#この8.0の部分を変更するだけでバージョン変更できるので簡単!#イメージ名:タグ(version指定)# FROM php:8.1-fpm FROM php:8.0-fpm#サーバー内の環境変数ENV TZ Asia/Tokyo#RUN:コンテナビルド時に実行するコマンド#インストール可能なパッケージの「一覧」を更新RUN apt-get update && \ #パッケージをインストール(ここでコンテナにnpmやgitなども入ります) #インストール先の確認はdocker-compose exec php dpkg -L パッケージ名でできる #gitの場合 docker-compose exec php dpkg -L git #docker-compose execはdockerのコンテナ内でコマンドを実行するコマンドです。apt-get install -y git unzip libzip-dev libicu-dev libonig-dev nodejs npm && \ #PHPの拡張ライブラリをインストールdocker-php-ext-install intl pdo_mysql zip bcmath#php.ini(PHPの設定ファイル)をDockerの仮想環境のコンテナにコピー#php.iniは自分で用意する必要があるCOPY ./docker/php/php.ini /usr/local/etc/php/php.ini#Laravelを使うためComposerをインストール#本当はRUNでコマンドを実行しComposerをインストールしてもいいが、マルチステージビルドという方法でイメージの軽量化を図るための書き方です。#この方法でやるのが最近見た感じ多そうでした。COPY --from=composer:2.4.1 /usr/bin/composer /usr/bin/composer#コンテナ起動中にdocker-compose exec コンテナ名 bash でコンテナ内でbashを動かせるのだが、その際のカレントディレクトリ(初期位置)になるWORKDIR /app 2.php.ini #一般的な設定について、あまり詳しくないので以下から引用させてもらっています。#https://qiita.com/hinako_n/items/f15646ea548bcdc8ac6czend.exception_ignore_args = offexpose_php = onmax_execution_time = 30max_input_vars = 1000upload_max_filesize = 64Mpost_max_size = 128Mmemory_limit = 256Merror_reporting = E_ALLdisplay_errors = ondisplay_startup_errors = onlog_errors = onerror_log = /var/log/php/php-error.logdefault_charset = UTF-8[Date]date.timezone = Asia/Tokyo[mysqlnd]mysqlnd.collect_memory_statistics = on[Assertion]zend.assertions = 1[mbstring]mbstring.language = Japanese 4.mysqlの設定ファイル 1.Dockerfile #mysqlのイメージを作成する自作ファイル#Docker Hub公式からイメージファイルを使用する#イメージ名:タグ(version指定)FROM mysql:8.0#MySQLの設定ファイル(my.conf)Docker内の仮想環境のコンテナ内にコピーCOPY ./docker/mysql/my.conf /etc/my.conf 2.my.conf #あまり詳しくないので以下から引用させていただいてます。#https://qiita.com/hinako_n/items/f15646ea548bcdc8ac6c[mysqld]# charactercharacter_set_server = utf8mb4collation_server = utf8mb4_0900_ai_ci# timezonedefault-time-zone = SYSTEMlog_timestamps = SYSTEM# Error Loglog-error = mysql-error.log# Slow Query Logslow_query_log = 1slow_query_log_file = mysql-slow.loglong_query_time = 1.0log_queries_not_using_indexes = 0# General Loggeneral_log = 1general_log_file = mysql-general.log[mysql]default-character-set = utf8mb4[client]default-character-set = utf8mb4 5.Docker Composeの設定ファイルを作成 nginx_mysql_laravel フォルダ直下にdocker-compose.ymlを作成し設置してください。 docker-compose.ymlは上記1-4で作成したDockerfile+phpMyAdminを一括で起動、管理するために必要なファイルになります。 1.docker-compose.ymlを作成 #参考#https://qiita.com/hinako_n/items/f15646ea548bcdc8ac6c#https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#Docker Composeのバージョン#https://docs.docker.jp/compose/compose-file/compose-versioning.html#compose-file-versioning#※Compose 最新バージョンが3.9みたいなので、それで記載してます。#※いまいち最新の推奨が何なのかはわかってないです。すみません。version: "3.9"#使うサービス(機能)を書いていくservices: #サービス名(任意で命名) #docker/nginx/default.confのfastcgi_passはサービス名:9000となっているので、こことあわせないといけない php: #自作のDockerfileからイメージ生成するための記載 build: #ビルドを実行する場所 context: . #Dockerfileまでのdocker-compose.ymlから見た相対パス dockerfile: ./docker/php/Dockerfile # コンテナを指定しやすくするための名前指定(任意) container_name: php #データの永続化(Dockerを切ってもデータが残るようにする) #Dockerはメモリ上で動くので、永続化しないと作業データが残らなくなります。 volumes: #ホスト側の ./laravel/をコンテナ側の /app にマウントし永続化する #コンテナにappフォルダが、ローカルにlaravelフォルダが自動で作成され共有状態になる #※=ローカルにデータが残り共有されるのでデータの永続化になります。 - ./laravel/:/app #サービス名 nginx: build: context: . dockerfile: ./docker/nginx/Dockerfile # コンテナを指定しやすくするための名前指定(任意) container_name: nx #http://localhost:ポート番号でアクセスするためのポートフォワーディング設定 #ローカルのポート:コンテナのポートと記載する #今回は8081で80(nginxのデフォルトのポート)にポートフォワーディングしてる ports: - 8081:80 #サービスの起動順序を制御 #php → web の順に起動するように指定 #この辺わかってないですが、無くても動くみたいです。 depends_on: - php volumes: - ./laravel/:/app #サービス名 #phpmyadminがある場合、下段の設定値のPMA_HOSTに設定されてます mysql: build: context: . dockerfile: ./docker/mysql/Dockerfile # コンテナを指定しやすくするための名前指定(任意) container_name: mysql #http://localhost:ポート番号でアクセスするためのポートフォワーディング設定 #ローカルのポート:コンテナのポートと記載する ports: - 3306:3306 #環境変数の設定。この内容をLaravelの設定ファイルにも書きます。 #実際のプロジェクト管理では、環境変数は .env に書いて .gitignore にするなどして、重要な情報が公開されないようにします。 environment: MYSQL_DATABASE: database MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password TZ: 'Asia/Tokyo' volumes: #名前付きボリュームでDBのデータを永続化 #Docker内で保持される、一見するとどこに行ったかわからなくなる #確認方法はdocker volume ls、docker volume inspectのMountpointでコンテナ内のパスや名前が確認できる #名前付きボリュームは--volumeオプションで指定して消さないといけない。 #しれっとたまるのでデスクトップアプリやdocker volume lsで確認するといい #重くなったら以下で整理 #docker volume prune:未使用のものをディレクトリ関係なく全領域からもろとも削除 #docker-compose down --volumes:今いるディレクトリに対してコンテナ停止、削除、ボリュームを削除する - mysql-volume:/var/lib/mysql # phpMyadminのコンテナ作成 phpmyadmin: #nginxがあるのでfpm版でと思ったけど、ApacheWebサーバーが含まれてるphpmyadmin:latestにしてます。 #※別のWebサーバーが既にある場合phpmyadmin:fpmって書いてあったけど、上手く動かせませんでした #よくphpmyadmin/phpmyadminが使われてるがこれはphpmyadminがdockerHubの公式になるまえのイメージなので、今後は公式のイメージが推奨されてる #https://hub.docker.com/_/phpmyadmin image: phpmyadmin:latest #サービスの起動順序を制御 #mysql → phpmyadmin の順に起動するように指定 #この辺わかってないですが、無くても動くみたいです。 depends_on: - mysql container_name: phpmyadmin ports: - "8080:80" #phpMyAdmin設定値 #https://hub.docker.com/_/phpmyadmin environment: #1に設定すると、任意のサーバーへの接続が許可される - PMA_ARBITRARY=1 #サーバーのホスト名かIPアドレスをサービス名で指定 #本ファイルの場合mysqlになる - PMA_HOSTS=mysql #サーバーに接続するユーザー名 - PMA_USER=root #SQLサーバーに接続するユーザーのパスワード - PMA_PASSWORD=password volumes: - ./docker/phpmyadmin/sessions:/sessions#名前付きボリュームの名前(一番下にかく)volumes: mysql-volume: Docker Composeで一括管理、起動する理由 Dockerfileは一つのコンテナのイメージ情報しか持っていません。 そのため複数コンテナで構築される仮想環境の場合は、docker-compose.ymlで一括管理して起動することで、起動する手間や一個一個起動した際の予期せぬエラーを防ぐことができます。 例) Dockerfileをコンテナにする場合は以下2つのコマンドを使います。 1.docker build(イメージ化) 2.docker run(イメージをコンテナ化) 今回はMySQL、php、nginx、phpMyAdminの四つのコンテナで構成されてるので、docker-compose.ymlを使わない場合、毎回起動時にこのセットを4回しないといけなくなります。 ■複数環境を立ち上げるときのportsの指定について mysqlなど複数立ち上げるときに port を分ける必要があります。 単独で使うときは以下の短い構文でOK。 単独はこれでOK ports: - 3306:3306 複数環境を立ち上げるときは短い構文ではうまくいきません。 複数の場合はNG ports: - 3306:13306 複数環境の場合は以下のように長い構文で分けて書くとうまくいきます。 複数環境立ち上げてポートを分ける場合はこれでOK ports: - target: 3306 #ローカル側。Laravel の .env の DB_PORT にはこれを書く published: 13306 #コンテナ側 protocol: tcp mode: host 参考サイト Compose ファイル version 3 リファレンス さいごに 今回はこれで完了です。 お疲れ様でした。 次回は4「Laravelをコマンドでインストール」を行います。 その後5で実際にコンテナを起動していきます。 Dockerシリーズの全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 Dockerはコンテナ?イメージ?Dockerfile?docker-compose.yml?などの役割が頭に入ってくると理解しやすくなりますが、 そこも慣れなので、焦らずにやっていきましょう。
【Docker】#2 ローカル(ホスト)に作業フォルダを作成

2022-10-12

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 今回は第二回目です。 ホスト(ローカル環境)に作業用のフォルダを作成します。 Dockerのインストールが終わってない方は、一回目の記事を参考にインストールしてみてください。 【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 用語 先によく出てくる用語だけ記載しておきます。 作業中にわからなくなったら見てください。 ホストOS 作業側のパソコン。ローカルともいう Dockerfile イメージをビルドで作るためのDockerの設定ファイル イメージ コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 ビルド Dockerfileからイメージを作成する事 コンテナ イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される docker-compose 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 docker-compose.yml 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 ホストに作業フォルダを作成 以下★マークのフォルダを作成してください。 空で大丈夫です。 nginx_mysql_laravel/★    TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能├── laravel★     Laravelのソースコードが置かれるフォルダ=実作業フォルダ├── docker★    dockerの設定ファイルや環境設定ファイルを置くフォルダ。│                 ここの配下のフォルダ名を変える場合、│                 Dockerfileとかdocker-compose.ymlでパスの修正が必要です│ ├── php★    phpコンテナ(phpの環境構築設定ファイル)│ │ ├── DockerfilephpのDockerfile│ │ └── php.iniphp設定ファイル環境立ち上げるときにコンテナにコピーされます│ ├── mysql★ MySQLコンテナ(MySQLの環境構築設定ファイル)│ │ ├── DockerfileMySQLのDockerfile│ │ └── my.confmysql 設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── nginx★    nginxコンテナ(nginxの環境構築設定ファイル)│ │ ├── DockerfilenginxのDockerfile│ │ └── default.confnginx設定ファイル環境立ち上げるときにコンテナにコピーされます│ └── phpmyadmin★phpMyAdminのデータが永続化される場所└── docker-compose.yml全コンテナの一括管理をするDockerの設定ファイル Dockerでコンテナを作った後に、フォルダ名変更などローカルのフォルダのパスが変わるようなことはしないでください。 どうなるか試したのですが、イメージもコンテナも消せなくなりました。 (強制削除もDockerデスクトップアプリでの削除もできませんでした) 一旦同じフォルダ名で同じdocker-compose.yml、dockerfileを用意したら消すことができたのですが、 よくわからない状態になるので注意してください。 さいごに 今回はこれで完了です。 次回は3「Dockerの設定ファイルを作成」を行います。 全体の流れとしては、大きく以下のようになっています。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 Dockerはコンテナ?イメージ?Dockerfile?docker-compose.yml?などの役割が頭に入ってくると理解しやすくなりますが、 そこも慣れなので、焦らずにやっていきましょう。
【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール

2022-10-11

はじめに 今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。 この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。 作成する環境は以下の通りです。 windows pc php 8.0.23 composer 2.4.1 nginx 1.22.0 MySQL 8.0.30 Laravel 6.20.44 phpMyAdmin最新 参考にした教材は以下です。 こちらがなかったらここまで実現できなかったと思います。 ありがとうございます。 駆け出しエンジニアのためのDocker入門 DockerでPHP(Laravel)+ nginx + MySQLのLEMP環境を構築する なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。 本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。 Dockerとは 環境構築を設定ファイルとコマンドで行えるツールです。 設定ファイルとコマンドで成り立つため、個人個人で環境の統一がしやすいのがメリットです。 Dockerの設定ファイルになれればバージョンの変更も容易なので、最初の敷居は高めですが、なれるとDocker一択!というほどお手軽で便利でチームで使いやすいものだと感じました。 手順を体系的に書いてわたすのがすごく楽になります。 環境構築に必要なもの Docker 今回のメインツール プロジェクトフォルダ ローカルPCの作業フォルダ。 この構造に沿って、docker-compose.ymlで共有フォルダのパスなどを設定し環境を動かす基盤にする phpやdbなどの設定ファイル 使う機能の設定ファイルは自分で用意する必要があります Dockerfile Dockerイメージをビルドする設定ファイル docker-compose.yml イメージからコンテナを一括で起動、管理するファイル Docker Desktopインストール 最初はDockerを使うためのアプリをインストールしましょう。 このアプリを起動してDockerで仮想環境を起動します。 1.Dockerの公式サイトにアクセス https://www.docker.com/get-started/ 2. Download for Windowsをクリック ※ちょっと下のSee Docker Desktop for Windowsも同じです 3.Docker Desktop Installer.exeを実行しインストール ※結構時間かかりますが、いわれるがまま実行で大丈夫です。 DockerDesktop(Docker for Windows)とVirtualBoxについて VirtualBoxとDockerDesktopは共存できないみたいです。 もしこの問題がある場合は、現在非推奨のDocker tool boxであれば一応Dockerを使うことができます。 Docker tool boxはつかったことないので、今回は割愛します。 4.dockerHubアカウント作成 https://hub.docker.com/ ※アカウント作成しないとdocker hub からイメージという主要ファイルをDL(pull)できなかったりするケースがあるそうです。 さいごに これでDockerのインストールや登録などの事前準備は完了です。 今後の流れとしては、大きく以下のようになります。 Docker Desktopインストール ローカルに作業フォルダを作成 Dockerの設定ファイルを作成 Laravelをコマンドでインストール dockerでコンテナ(機能)を起動+Laravel表示確認 LaravelのDB設定、確認 phpMyAdmin表示確認 出来てる環境の確認 今回はここでおわりです。 Dockerはコンテナ?イメージ?Dockerfile?docker-compose.yml?などの役割が頭に入ってくると理解しやすくなりますが、 そこも慣れなので、焦らずにやっていきましょう。
profile_icon
taka
プログラマー
2017年11月から業務でPHPを触りだしたエンジニアです。 業務経験8年程度。 2022年から「要求整理→設計→実装→テスト→リリース」と開発のステップをきちんと経験したく、 様々な会社を経験しました。 現職が自社案件枯渇、本社エリア以外のSES案件の繋がりがなしと急に発覚し、急遽強制的に転職活動中。 現職をやめるつもりはなかったし、転職は本当に最後にしたいのでもしよければお声がけください。 【GitHub コードサンプル】 https://github.com/tm-qc - Docker、MVC、CRUD、認証、テストなどのサンプルコード(Laravel、ASP.NET CORE) - 経験PJ詳細まとめ