まだDocker-Composeでupできたというレベル
wordpressを持ってくる
このコマンドでまずもってくる。けどもしかしてこれrootじゃないとできないのかな。
自分はsudoしてもダメだったのでsudo su - でrootでやった
$ cd /tmp
$ curl https://wordpress.org/latest.tar.gz | tar -xvzf -
wordpressっていうディレクトリができるので、気に入らなければ適当に名前変更する
とりあえずtmpじゃあれなので、移動しておく
# 個人的に/srv/dockerにDocker周りをおいてるのでそこにディレクトリ作る
$ [sudo] mkdir -p /srv/docker
$ mv /tmp/wordpress /srv/docker/wordpress
持ってきた中に設定ファイルがあるのでそれを設定する
- wp-config.php
$ cd /srv/docker/wordpress
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php
wp-config.php の一部
- rootなん?とか、DB名それなん? とかは思うところですが、とりあえずこれで。
後々出てくるdocker-compose.ymlと相談してください。
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'YOUR_PASSWROD');
define('DB_HOST', 'db:3306');
router.php というものを作っておく(これ必要なのかな…)
router.php
<?php
$root = $_SERVER['DOCUMENT_ROOT'];
chdir($root);
$path = '/'.ltrim(parse_url($_SERVER['REQUEST_URI'])['path'],'/');
set_include_path(get_include_path().':'.__DIR__);
if(file_exists($root.$path))
{
if(is_dir($root.$path) && substr($path,strlen($path) - 1, 1) !== '/')
$path = rtrim($path,'/').'/index.php';
if(strpos($path,'.php') === false) return false;
else {
chdir(dirname($root.$path));
require_once $root.$path;
}
}else include_once 'index.php';
docker-compose.yml 作って起動
さっきまでと同じパスに、docker-compose.yml を作る
$ cd /srv/docker/wordpress
$ vi docker-compose.yml
docker-compose.yml
ここで、rootとWordPress用のパスワード変えたけど、なんかうまく行かなかったから…
まだ別に公開してるものじゃなく、docker-compose upできたもの…ということで…
- 40080ポートにしてます。好きな設定で良いのですが、後述のNginxでの設定で利用しますので覚えておいてください
web:
image: tutum/wordpress:latest
links:
- db:mysql
environment:
- WORDPRESS_DB_PASSWORD=YOUR_PASSWROD
ports:
- "40080:80"
volumes:
- .:/code
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=YOUR_PASSWROD
- MYSQL_DATABASE=wordpress
ここまできたらもうきっと平気。
パーミッションとか言われたら素直にdocker-compose実行権限のあるグループユーザとかでパーミッション上書きしましょう。
$ docker-compose up
ホスト側nginx
他のDockerコンテナを扱ってる時と何も変わらないですが、一応。
$ sudo vi /etc/nginx/sites-available/WP.YOUR_FQDN
/etc/nginx/sites-available/WP.YOUR_FQDN
- ここで、Docker-Composeで指定したポートを使います
server {
listen 80;
listen [::]:80;
server_name WP.YOUR_FQDN;
server_tokens off;
location / {
proxy_pass http://127.0.0.1:40080;
}
}
configのテストをして問題なければリロード
$ cd /etc/nginx/sites-enabled
$ sudo ln -s /etc/nginx/sites-available/WP.YOUR_FQDN
# nginxのConfigテスト
$ sudo nginx -t
$ sudo service nginx reload
あとはブラウザからアクセスしてみると見えるかと。