« podmanの実験(その1) | トップページ | MacとWindowsとCentOSのファイル共有ー備忘録 »

2020年1月13日 (月)

dockerでやってみたWordPress

dockerでWordPressを試してみた。
以下を参照させていただいた。
初めてのDocker~公式イメージで簡単にWordPressサイトを作る方法

以下実行結果

まずはDockerのインストールから。ここでは以下を参照させていただいた。
Install Docker on CentOS 7
# yum install -y yum-utils device-mapper-persistent-data lvm2

中略

完了しました!
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
読み込んだプラグイン:fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
# yum install -y docker-ce docker-ce-cli containerd.io

中略

完了しました!

# systemctl start docker
# docker --version
Docker version 19.03.5, build 633a0ea
#

Dockerのインストール完了。次にWordpressとmysqlのPull。

# docker pull docker.io/wordpress
Using default tag: latest
latest: Pulling from library/wordpress
中略

Status: Downloaded newer image for wordpress:latest
docker.io/library/wordpress:latest


# docker pull docker.io/mysql
Using default tag: latest
latest: Pulling from library/mysql
中略

Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

mysqlとWordPressのRun。
# sudo docker run --name mysite_db -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mysite -d mysql
cdbb6dcc1293f16aaf8fa455972e9669e90613fbd1265c7cd0ef9273580f9c8

# sudo docker run --name mysite --link mysite_db:mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=password -d wordpress
e547ad16ef7140380431aaeb14b47023dbfae3efb00d75d9120c0748102335ea

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e547ad16ef71 wordpress "docker-entrypoint.s…" 24 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp mysite
cdbb6dcc1293 mysql "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp mysite_db

しかしながら、WordPressはDatabaseにConnectionできないとな、、、、

Docker1

想定される原因は以下だと言っている:

  • Are you sure you have the correct username and password?
  • Are you sure you have typed the correct hostname?
  • Are you sure the database server is running?

そもそも、WordPressコンテナからMysqlコンテナにどうやって接続するのだろう。

今一度runsの際のパラメータを見てみる。
sudo docker run --name mysite_db -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mysite -d mysql
mysqlに設定されるパラメータはrootのパスワードとデータベース名

sudo docker run --name mysite --link mysite_db:mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=password -d wordpress
WordPressに設定されるのは--linkオプションのみ。

wordpress上のbashで環境変数を確認すると以下の通り。
root@e547ad16ef71:/var/www/html# env
MYSQL_PORT_33060_TCP_ADDR=172.17.0.2
MYSQL_PORT=tcp://172.17.0.2:3306
MYSQL_PORT_3306_TCP_ADDR=172.17.0.2
MYSQL_NAME=/mysite/mysql
MYSQL_ENV_MYSQL_ROOT_PASSWORD=password
MYSQL_PORT_3306_TCP_PORT=3306
HOSTNAME=e547ad16ef71
PHP_VERSION=7.3.13
APACHE_CONFDIR=/etc/apache2
PHP_MD5=
PHP_INI_DIR=/usr/local/etc/php
WORDPRESS_VERSION=5.3.2
GPG_KEYS=CBAF69F173A0FEA4B537F470D66C9593118BCCB6 F38252826ACD957EF380D39F2F7956BC5DA04B5D
MYSQL_ENV_MYSQL_MAJOR=8.0
PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie
MYSQL_PORT_3306_TCP=tcp://172.17.0.2:3306
PWD=/var/www/html
HOME=/root
MYSQL_ENV_GOSU_VERSION=1.7
MYSQL_PORT_33060_TCP_PROTO=tcp
WORDPRESS_SHA1=fded476f112dbab14e3b5acddd2bcfa550e7b01b
PHP_SHA256=57ac55fe442d2da650abeb9e6fa161bd3a98ba6528c029f076f8bba43dd5c228
PHPIZE_DEPS=autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c
TERM=xterm
PHP_URL=https://www.php.net/get/php-7.3.13.tar.xz/from/this/mirror
MYSQL_PORT_33060_TCP_PORT=33060
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi
MYSQL_PORT_3306_TCP_PROTO=tcp
SHLVL=1
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
MYSQL_PORT_33060_TCP=tcp://172.17.0.2:33060
WORDPRESS_DB_PASSWORD=password
APACHE_ENVVARS=/etc/apache2/envvars
MYSQL_ENV_MYSQL_DATABASE=mysite
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_ASC_URL=https://www.php.net/get/php-7.3.13.tar.xz.asc/from/this/mirror
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
MYSQL_ENV_MYSQL_VERSION=8.0.18-1debian9
_=/usr/bin/env
root@e547ad16ef71:/var/www/html#

/etc/hostsを確認すると以下の通り。mysqlは172.17.0.2でホストマッピングされている。
root@e547ad16ef71:/var/www/html# env | grep mysql
MYSQL_NAME=/mysite/mysql
root@e547ad16ef71:/var/www/html# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 mysql cdbb6dcc1293 mysite_db
172.17.0.3 e547ad16ef71
root@e547ad16ef71:/var/www/html#

ポート番号等はデフォルトの値が入っている。mysqlに到達できないのか?と思ってping実行を試みるもそんなん知らんと言われた。最小構成ではpingも省かれるみたい。代わりにcurlを使ってみる。
root@e547ad16ef71:/var/www/html# curl mysql
curl: (7) Failed to connect to mysql port 80: Connection refused
どうやら到達はしているみたい。

次にwp-config.phpを覗いてみる。

root@e547ad16ef71:/var/www/html# cat wp-config.php
<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the
* installation. You don't have to use the web site, you can
* copy this file to "wp-config.php" and fill in the values.
*
* This file contains the following configurations:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'mysite');

/** MySQL database username */
define( 'DB_USER', 'root');

/** MySQL database password */
define( 'DB_PASSWORD', 'password');

/** MySQL hostname */
define( 'DB_HOST', 'mysql');

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '');

/**#@+
中略


root@e547ad16ef71:/var/www/html#
なんだか良い感じ。

困ったなぁ、、、、

« podmanの実験(その1) | トップページ | MacとWindowsとCentOSのファイル共有ー備忘録 »

ソフトウエア導入」カテゴリの記事

ツールの使い方」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« podmanの実験(その1) | トップページ | MacとWindowsとCentOSのファイル共有ー備忘録 »