Docker #19:CentOS+Apache+PHP環境 (5)
以下サイトを参考にMariaDBとの連携をやってみる。
Dockerであそぶ(6)Apache-PHP-Mariadb連携 | TECH Projin
1) MariaDBコンテナ作成
docker pull mariadb:latest docker run -it -d --rm -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=docker \ -e MYSQL_USER=docker -e MYSQL_PASSWORD=docker \ --name my-mariadb1 mariadb:latest"docker ps -a" で確認してみる
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ac004331c53 mariadb:latest "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 0.0.0.0:3306->3306/tcp my-mariadb1動作していると思われる
確認取れたのでコンテナ終了
docker stop my-mariadb1"
2) Dockerfile修正
これまで作成していたDockerfileにphp-mysqlをインストールするよう1行追加
FROM centos:latest RUN dnf -y update && \ dnf -y install httpd php RUN dnf -y install php-mysql EXPOSE 80 RUN ["mkdir", "-p", "/run/php-fpm"] COPY startup.sh /startup.sh RUN chmod 744 /startup.sh CMD ["/startup.sh"]※ 4行目を追加
3) コンテナイメージビルド
cd C:/Users/user/php docker build -t my-php .→ エラーが発生
$ docker build -t my-php . Sending build context to Docker daemon 4.608kB Step 1/8 : FROM centos:latest ---> 831691599b88 Step 2/8 : RUN dnf -y update && dnf -y install httpd php ---> Using cache ---> f4ef9934dcf3 Step 3/8 : RUN dnf -y install php-mysql ---> Running in 9e9287ce8ab0 Last metadata expiration check: 1 day, 2:00:54 ago on Tue Jul 28 19:40:19 2020. No match for argument: php-mysql Error: Unable to find a match: php-mysql The command '/bin/sh -c dnf -y install php-mysql' returned a non-zero code: 1
4) 原因調査
centos8コンテナを起動しbashに接続
php-mysqlをインストールしてみる
別のパッケージで php-mysqlnd といのがあるっぽい
末尾の "nd" は "native driver" のことらしい
これをインストールしてみる
といことで php-mysqlnd を使うようにDockerfileを修正
CentOSのbashは exit で終了しておく
docker run -it centos:latest bash
php-mysqlをインストールしてみる
dnf -y install php-mysqlやはりエラーとなる
別のパッケージで php-mysqlnd といのがあるっぽい
末尾の "nd" は "native driver" のことらしい
これをインストールしてみる
dnf -y install php-mysqlndこれは正常にインストールできた。
といことで php-mysqlnd を使うようにDockerfileを修正
CentOSのbashは exit で終了しておく
5) Dockerfile修正
FROM centos:latest RUN dnf -y update && \ dnf -y install httpd php RUN dnf -y install php-mysqlnd EXPOSE 80 RUN ["mkdir", "-p", "/run/php-fpm"] COPY startup.sh /startup.sh RUN chmod 744 /startup.sh CMD ["/startup.sh"]
6) コンテナイメージビルド
docker build -t my-php .→ 成功
7) PHPコンテナ起動
docker run -it -d -p 80:80 \ -v //c/Users/user/php/public-html/:/var/www/html/ \ --name my-php1 --link my-mariadb1 my-php→ エラー
$ docker run -it -d -p 80:80 \ > -v //c/Users/user/php/public-html/:/var/www/html/ \ > --name my-php1 --link my-mariadb my-php D:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: could not get container for my-mariadb: No such container: my-mariadb. See 'D:\Program Files\Docker Toolbox\docker.exe run --help'.→ MariaDBコンテナが起動していないとダメか?
ということでMariaDBコンテナを起動
docker run -it -d -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=docker \ -e MYSQL_USER=docker -e MYSQL_PASSWORD=docker \ --name my-mariadb1 mariadb:latest再度PHPコンテナ起動
docker run -it -d -p 80:80 \ -v //c/Users/user/php/public-html/:/var/www/html/ \ --name my-php1 --link my-mariadb1 my-php
8) テストページ作成
https://tech.pjin.jp/blog/2016/01/04/dockerであそぶ(6)apache-php-mysql連携/ のdb.phpを C:\Users\user\php\public-html\db.php へ保存
エンコードは UTF-8 とした。
ブラウザで http://192.168.99.102/db.php を表示
→ エラーとなる
エンコードは UTF-8 とした。
ブラウザで http://192.168.99.102/db.php を表示
→ エラーとなる
このページは動作していません
192.168.99.102 では現在このリクエストを処理できません。
HTTP ERROR 500
192.168.99.102 では現在このリクエストを処理できません。
HTTP ERROR 500
続く・・・
Docker学習
0 件のコメント:
コメントを投稿