我考虑了一下如何最优化地运用WordPress + Docker
这是为这样的人撰写的文章。
-
- 本番環境と同じ環境を検証環境に再現したい、最小の工数で。
本番環境以外でテーマを改修してみたい。
プラグインのアップデートとかを開発環境でテストしたい。
WordpressをDockerで開発しようとしても設定ファイルとか面倒すぎる。
本番と同じ内容のDBを再現したいけど上手くいかない。
できればコンテナ起動時に本番と同じ内容にしたい。
你会变得能做什么?
-
- 本番環境と全く同じものをDocker環境に再現します。
チーム開発を爆速にするよ。
疎結合でね。
普通にやろうとすると本番環境のリソースを見に行ってたりしてちょっと残念。
请注意
-
- 完全に自分用のメモです。
-
- 多分、もっと良い方法があると思います。
-
- このやり方は、なるべく本番環境に影響を与えないことを考慮しています。
- そのために、wp-contentをgitリポジトリとして管理しています。(これ以上の階層はできれば触りたくない・・・・)
开始吧!
安全地开发主题吧!
-
- 基本的にwp-contentをgitリポジトリとして管理します。
-
- なぜなら、これ以上のディレクトリは設定ファイルとかがあって管理が大変だから。
- 環境変数とか使えば良いけど、面倒臭いので今回はそういうのなしで行きます。
目录结构
.git
docker
db
initdb.d
localhost.sql
wordpress
Dockerfile
languages
plugins
themes
uploads
.gitignore
docker-compose.yml
index.php
version: '3'
services:
db:
image: mariadb:10.5-focal
restart: always
environment:
MYSQL_ROOT_PASSWORD: {{お好きなものを}}
MYSQL_DATABASE: {{お好きなものを}}
MYSQL_USER: {{お好きなものを}}
MYSQL_PASSWORD: {{お好きなものを}}
volumes:
- ./docker/db/initdb.d:/docker-entrypoint-initdb.d
wordpress:
depends_on:
- db
build: ./docker/wordpress/
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: {{お好きなものを}}
WORDPRESS_DB_USER: {{お好きなものを}}
WORDPRESS_DB_PASSWORD: {{お好きなものを}}
volumes:
- .:/var/www/html/wp-content
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
depends_on:
- db
ports:
- 8888:80
FROM wordpress:latest
# 必要なツール郡をインストール
RUN apt-get update
RUN apt-get -y install wget unzip
# WP プラグイン (zip) ダウンロード
WORKDIR /tmp/wp-plugins
RUN wget https://downloads.wordpress.org/plugin/contact-form-7.4.6.zip
RUN wget https://downloads.wordpress.org/plugin/syntaxhighlighter.zip
RUN wget https://downloads.wordpress.org/plugin/wp-emmet.zip
# Zip ファイルを解凍してインストール
RUN unzip './*.zip' -d /usr/src/wordpress/wp-content/plugins
# 不要になった一時ファイルを削除
RUN apt-get clean
RUN rm -rf /tmp/*
# デフォルトテーマなんていらないよね!
RUN rm -rf /usr/src/wordpress/wp-content/themes/twenty**
# サーバが読めるように以下の所有者を変更
RUN chmod -R 777 /usr/src/wordpress
RUN chmod -R 777 /var/www/html
WORKDIR /var/www/html
-
- ディレクトリ構造のポイントは、Dockerに必要なものはdocker-compose.ymlを除いてすべて/dockerリポジトリの中に格納していることです。
- これでわかりやすくなりましたね。
将实际环境的数据库反映到Docker环境中。
-
- 从生产环境中导出SQL。
-
- 将导出的SQL放入Docker环境的initdb.d中。
-
- 使用文本编辑器打开(2),将URL替换为Docker的URL。
例:
xxx.com -> http://000.00.0.000:8000之类的。
特别是以下两个选项是必需更改的地方。
其他地方不变也可以工作,只需读取生产路径。
但如果只有两个地方,那就把全部都替换掉吧!
最后,肯定是执行docker-compose up -d。
INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES
- (1, 'siteurl', 'xxx.com', 'yes'),
+ (1, 'siteurl', 'http://000.00.0.000:8000', 'yes'),
- (2, 'home', 'xxx.com', 'yes'),
+ (2, 'home', 'http://000.00.0.000:8000', 'yes'),