15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordPress REST APIをDockerでサクッとテストする

Posted at

ニィロウで本天井ぶちかましたので初投稿です。

事の発端

自動作成した記事をWordPressに下書き投稿する機能を業務で開発しました。
(一から十まで自動作成するのではなく、後から人の手が入ることを前提としたシステムです。)

テストするためにぶっ壊してもいいテスト用のWordPressが欲しいんですが、WordPressって用意するの面倒臭そうじゃないですか?

~定例MTGにて~
僕「開発用のWordPress貸してもらえないかなぁー(怠惰)」
弊社のスゥパエンジニィア「コンテナでテストできませんか?」
僕「できます(反射)」

やっべ。

ゴール

image-20221021101342052.png
栓抜きにも見えますね、このピクトグラム。

コンテナ作る

Python側

Dockerfileで作りました。
(OS確認するまでUbuntuだと思ってたのは内緒)

# cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
(中略)
# cat /etc/debian_version 
11.5
# python --version
3.10.7

WordPressに関連する処理の内容は、

  1. 画像をメディアライブラリにPOSTする
  2. 記事を下書き状態でPOSTする

の2つです。

WordPress側

ビルド

こちらの通りにディレクトリやらyamlを作ってdocker compose up -dします。

http://localhost:8000にアクセスして、言語設定とアカウント設定を行ってインストール。

アプリケーションパスワードの設定

WordPress REST APIを利用するにはいくつか認証方法がありますが、今回は一番手っ取り早いアプリケーションパスワード認証で行きました。
ボックスに入力した文字列はKeyで、ValueとなるパスワードはWordPressが自動で作ってくれます。

image-20221025095739215.png

作ったパスワードにはもう二度と会えないので、恋人との思い出よりも大切にしまっておきましょう。
忘れてしまったら新しい恋再設定が必要になります。

ちなみに、Basic認証を掛けていると設定できなかったです。
2人は相容れない存在なのかな‥‥不倶戴天なのかな‥‥悲しいね‥‥。

これでコンテナの準備は完了です。
簡単ですね。これだからDockerはやめられねぇ。

2コンテナ間で通信できるようにする

ここのためにこの記事を書いたといっても過言じゃない。

結論を言うとhttp://gateway.docker.internal:8000/wp-json/wp/v2/postsを使います。
(もちろん画像の方は/wp-json/wp/v2/mediaです)

たったこれだけの文字列に出逢うために2日かかりました。

始めは「http://localhost:8000/wp-json/wp/v2/postsで行けるっしょwwwww」とか思っていたんですよこの人。
何考えてるんですかね?

ここでいうlocalhostは当然ホストマシンから見たlocalhost、つまりホストマシンなわけで。
WordPressが動いているコンテナではないです。

小見出しのように2つのコンテナ間で通信する方法を調べていたせいで、中々辿り着くことができませんでした。
WordPressのコンテナをホストOS上で動く1つのプロセスと考えることで、ようやく正しい検索ができた次第です。

始末

docker-compose down --volumesしましょう。

--volumesでデータベースも消去します。
次回起動時に投稿内容などを確認したい場合は--volumesを外すだけ。

おわりに

理解が浅いと調べ方すら分からないものですね。
色々な情報がネット上に存在する時代だからこそ、ソレを扱う人間が勉強する意義は増しているんだなあ

ラップトップ抱えた原始人にならないよう、これからも精進していきとうございます。

参考

非常に助かりました。有難うございます。

Dockerのコンテナの中からホストOS上のプロセスと通信する方法

15
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?