自宅のwindows 10 Homeでwordpressを起動してみた
起動はできたが、mariaDBのデータをローカルディレクトリで永続化しようとするとエラーになるのでdocker volumeでの永続化となっている。
環境
Windows 10 Home
1809
必要なものをインストール
chocolatey install
管理者権限で起動したpower shellから以下のコマンドを実行
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
virtual box
choco install virtualbox
docker-toolbox
choco install -y docker-toolbox
cygwin install(ディレクトリ作成のみで使用なのでなくても可)
choco install -y cygwin
手順
docker quick terminalを起動し、dockerの実行可能なVMを起動する
以下基本的にpowershellでコマンドを発行している。
作業ディレクトリを作成する
docker-toolboxで起動するhostのvolumeがC:\Usersにマウントされているのでその配下で作業ディレクトリを作成するのが最速
mkdir -p $env:USERPROFILE\work
cd $env:USERPROFILE\work
docker-compose.ymlを作成する
vi docker-compose.yml
mariadbのバージョンは指定しておいたほうが良いと思われる。
12/26 プラグインが動かなかったのでDNSの設定追加しました。
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: pw
WORDPRESS_DB_NAME: db_name
dns:
- 8.8.8.8
- 9.9.9.9
volumes:
- /c/Users/ユーザー名/work/wordpress:/var/www/html
db:
image: mariadb
restart: always
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: user
MYSQL_PASSWORD: pw
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
db:
起動
docker-compose up -d
コマンドプロンプトからIP確認
docker-machine ip default
ブラウザからアクセス
http://${表示されたIP}:8080/
tips
ログの確認
docker-compose logs -f
バッドノウハウ
mysqlが上がってこないのでmariaDBを使うようにした。
--initialize specified but the data directory has files in it. Aborting.
元のdocker-compose.yml
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: pw
WORDPRESS_DB_NAME: db_name
volumes:
- /c/Users/ユーザー名/work/wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: user
MYSQL_PASSWORD: pw
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- /c/Users/ユーザー名/work/db:/var/lib/mysql
mariadbのデータ領域をローカルディレクトリ上で永続化しようとするとエラーになる
db_1 | 2019-12-25 3:57:00 0 [ERROR] InnoDB: Corrupted page [page id: space=0, page number=0] of datafile './ibd
ata1' could not be found in the doublewrite buffer.
db_1 | 2019-12-25 3:57:00 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
db_1 | 2019-12-25 3:57:00 0 [ERROR] Plugin 'InnoDB' init function returned error.
db_1 | 2019-12-25 3:57:00 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
db_1 | 2019-12-25 3:57:00 0 [ERROR] Unknown/unsupported storage engine: InnoDB
db_1 | 2019-12-25 3:57:00 0 [ERROR] Aborting
db_1 |
db_1 | Installation of system tables failed! Examine the logs in
db_1 | /var/lib/mysql/ for more information.
db_1 |
db_1 | The problem could be conflicting information in an external
db_1 | my.cnf files. You can ignore these by doing:
db_1 |
db_1 | shell> /usr/bin/mysql_install_db --defaults-file=~/.my.cnf
db_1 |
db_1 | You can also try to start the mysqld daemon with:
db_1 |
db_1 | shell> /usr/sbin/mysqld --skip-grant-tables --general-log &
db_1 |
db_1 | and use the command line tool /usr/bin/mysql
db_1 | to connect to the mysql database and look at the grant tables:
db_1 |
db_1 | shell> /usr/bin/mysql -u root mysql
db_1 | mysql> show tables;
db_1 |
db_1 | Try 'mysqld --help' if you have problems with paths. Using
db_1 | --general-log gives you a log in /var/lib/mysql/ that may be helpful.
db_1 |
db_1 | The latest information about mysql_install_db is available at
db_1 | https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
db_1 | You can find the latest source at https://downloads.mariadb.org and
db_1 | the maria-discuss email list at https://launchpad.net/~maria-discuss
db_1 |
db_1 | Please check all of the above before submitting a bug report
db_1 | at http://mariadb.org/jira
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: pw
WORDPRESS_DB_NAME: db_name
volumes:
- /c/Users/ユーザー名/work/wordpress:/var/www/html
db:
image: mariadb
restart: always
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: user
MYSQL_PASSWORD: pw
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- /c/Users/ユーザー名/work/db:/var/lib/mysql