Memo

メモ > サーバ > 各論: Docker > イメージの利用(Apache + PHP 環境の構築)

■イメージの利用(Apache + PHP 環境の構築)
ベースとなるイメージが、Docker公式イメージとして利用できる Apacheやnginxなど、よく使われるものはたいてい揃っている(公式以外のイメージもある) Docker Hubのオフィシャルイメージを使ったLAMP環境(Apache+PHP+MySQL)構築 - Qiita https://qiita.com/naga3/items/be1a062075db9339762d ■Apache+PHPのイメージを取得
$ docker container run -d php:8.1-apache … PHP+ApacheのイメージをDocker Hubから取得し、バックグラウンド(-d)でコンテナを起動 $ docker image ls … 取得したイメージ一覧を表示 $ docker container ls … 起動しているコンテナ一覧を表示
「-d」を指定しない場合、フォアグラウンドで起動される この場合、プロセスの標準入出力・標準エラーをコンソールに出力する ■ブラウザで確認
$ docker container run -p 80:80 -d php:8.1-apache … ホストの80番ポートとコンテナの80番ポートを結びつけて、コンテナを起動 $ docker container ls … 起動しているコンテナ一覧を表示
ブラウザで以下にアクセスし、「403 Forbidden」が表示されれば成功 http://127.0.0.1/ ■コンテナを終了する場合
$ docker container ls … コンテナのIDを確認 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06256413da0f php:8.1-apache "docker-php-entryp..." 14 minutes ago Up 14 minutes 0.0.0.0:80->80/tcp thirsty_bardeen 957ba4371700 hello-world "/hello" 38 minutes ago Exited (0) 38 minutes ago vigorous_colden $ docker container rm -f 06256413da0f … ID「06256413da0f」のコンテナを終了する場合 $ docker container rm -f $(docker container ls -a -q) … すべてのコンテナを終了する場合
■イメージを削除する場合
$ docker image ls … イメージのIDを確認 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker-whale latest 2f37bab81128 About a minute ago 274.1 MB hello-world latest 0a6ba66e537a 2 weeks ago 960 B $ docker image rm 2f37bab81128 … ID「2f37bab81128」のイメージを削除する場合
■コンテンツを作成
$ docker container run --name php -p 80:80 -d php:8.1-apache … コンテナに「php」という名前を付けて起動 $ docker container exec -it php bash … phpコンテナのターミナルに接続 # echo '<?php phpinfo();' > index.php … index.php を作成(初期状態ではviはインストールされていない)
ブラウザで以下にアクセスし、phpinfoが表示されれば成功 http://127.0.0.1/
# exit $ docker container rm -f $(docker container ls -a -q) … 確認できたら終了
docker exec -itって実際は何をしてるの?【90日目】 - エンジニアのひよこ_level10 https://www.nyamucoro.com/entry/2018/01/11/224932 ■ファイル共有(C:\Users 配下を対象にする) ※Windows側とファイルを共有 Vagrantとは違い、コンテナを終了させるとデータも初期化されるため、データ保持のためにも 以下、作業フォルダが C:\Users\refirio であるとする docker\test\code\index.php を作成し、以下の内容を記述
<?php phpinfo() ?>
以下のようにして起動
$ docker container run --name php -v $PWD/docker/test/code:/var/www/html -p 80:80 -d php:8.1-apache … docker\test\code と /var/www/html を共有 $ docker container exec -it php bash … phpコンテナのターミナルに接続 # ls /var/www/html … 同期されたファイルを確認 # exit
ブラウザで以下にアクセスし、phpinfoが表示されれば成功 http://127.0.0.1/
$ docker container rm -f $(docker container ls -a -q) … 確認できたら終了
「$PWD」は現在のフォルダを表す $PWD/docker/test/code:/var/www/html をフルパスで指定する場合、以下のようにする。相対パスでは指定できないみたい /home/refirio/docker/test/code:/var/www/html フォルダがWindows領域なら以下のようになる(Docker Toolboxの使用時など) /c/Users/refirio/docker/test/code:/var/www/html ■ファイル共有(C:\Users 配下以外を対象にする) ※Docker Toolboxで検証していたときに発生した問題 WSL2ならWSL2内にコンテンツを配置すればいいので問題にならない C:\Users 配下以外をファイル共有対象にして起動しようとすると、以下のようなエラーになる
ERROR: for php Cannot start service php: oci runtime error: container_linux.go:262: starting container process caused "chdir to cwd (\"/var/www/html\") set in config.json failed: no such file or directory"
C:\Users 配下以外を対象にしたい場合、マウントの指定を行う必要がある ここでは ・Docker用のマシン名は「default」である ・C:\localhost\home\test\public_html\docker を作業フォルダにする という場合を想定する Dockerを起動させている場合、「Oracle VM VirtualBox マネージャ」で「default」の電源をオフにしておく VboxManageでVirtualBox共有フォルダを追加する (初回のみ実行する)
>cd C:\Program Files\Oracle\VirtualBox >VBoxManage sharedfolder add default --name data --hostpath "C:\localhost\home\test\public_html\docker"
「Docker Quickstart Terminal」を起動し、マウントを行う (Dockerを起動させるたび実行する)
docker-machine ssh default 'sudo mkdir -p /c/localhost/home/test/public_html/docker' docker-machine ssh default 'sudo mount -t vboxsf -o uid=0,gid=0 data /c/localhost/home/test/public_html/docker'
以降は通常どおりの手順で起動できる Dockerにホストのフォルダをマウントしたい! - Qiita https://qiita.com/dojineko/items/f623894ef2436bef890e

Advertisement