<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker on いつかの熊右衛門</title><link>https://kuma-emon.com/tags/docker/</link><description>Recent content in Docker on いつかの熊右衛門</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Sat, 23 Dec 2023 12:50:15 +0900</lastBuildDate><atom:link href="https://kuma-emon.com/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker：pull 済みイメージの最新を一括で取得する</title><link>https://kuma-emon.com/posts/it/pc/5659/</link><pubDate>Sat, 23 Dec 2023 12:49:41 +0900</pubDate><guid>https://kuma-emon.com/posts/it/pc/5659/</guid><description>&lt;img src="https://kuma-emon.com/" alt="Featured image of post Docker：pull 済みイメージの最新を一括で取得する" /&gt;&lt;p&gt;pull 済みイメージの新しいものがあるとき、個々にアップデートするのは大変です。&lt;br&gt;
なので、一括で取得するコマンドを用意しました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; image in &lt;span class="k"&gt;$(&lt;/span&gt;docker images --format &lt;span class="s2"&gt;&amp;#34;{{.Repository}}:{{.Tag}}&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; docker pull &lt;span class="nv"&gt;$image&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$image&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt; &lt;span class="n"&gt;images&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-format&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;{{.Repository}}:{{.Tag}}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;docker&lt;/span&gt; &lt;span class="n"&gt;pull&lt;/span&gt; &lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更新後、未使用になったイメージを次のコマンドで削除しておきます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rmi &lt;span class="k"&gt;$(&lt;/span&gt;docker images -f &lt;span class="s2"&gt;&amp;#34;dangling=true&amp;#34;&lt;/span&gt; -q&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;docker&lt;/span&gt; &lt;span class="n"&gt;images&lt;/span&gt; &lt;span class="o"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;dangling=true&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-q&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;ForEach-Object&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;docker&lt;/span&gt; &lt;span class="n"&gt;rmi&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://www.amazon.co.jp/dp/B08WHG4VF9" target="_blank" rel="noopener" class="affi-link"&gt;Docker Desktop for Windows/Mac と VSCode でつくるクリーンな開発環境構築入門 (Amazon)&lt;/a&gt; &lt;a href="https://www.amazon.co.jp/dp/B08D8TXXHD" target="_blank" rel="noopener" class="affi-link"&gt;Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) (Amazon)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Docker で JupyterLab または Jupyter Notebook 使う</title><link>https://kuma-emon.com/posts/it/pc/1842/</link><pubDate>Sat, 28 Aug 2021 17:50:01 +0900</pubDate><guid>https://kuma-emon.com/posts/it/pc/1842/</guid><description>&lt;img src="https://kuma-emon.com/" alt="Featured image of post Docker で JupyterLab または Jupyter Notebook 使う" /&gt;&lt;p&gt;Dockerイメージが &lt;a class="link" href="https://hub.docker.com/r/continuumio/anaconda3" target="_blank" rel="noopener"
 &gt;continuumio/anaconda3&lt;/a&gt; で公開されているので利用はとても簡単です。&lt;/p&gt;
&lt;p&gt;JupyterLab（Jupyer Notebook の後継）を使いたいなら&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c &lt;span class="s2"&gt;&amp;#34;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; conda install jupyter -y --quiet &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mkdir -p /opt/notebooks &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; jupyter lab \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --notebook-dir=/opt/notebooks --ip=&amp;#39;*&amp;#39; --port=8888 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --no-browser --allow-root \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --NotebookApp.token=&amp;#39;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jupyter Notebook の方なら&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c &lt;span class="s2"&gt;&amp;#34;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; conda install jupyter -y --quiet &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mkdir -p /opt/notebooks &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; jupyter notebook \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --notebook-dir=/opt/notebooks --ip=&amp;#39;*&amp;#39; --port=8888 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --no-browser --allow-root \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --NotebookApp.token=&amp;#39;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で実行後、ブラウザから http://localhost:8888/ にアクセスすれば OK です。&lt;br&gt;
root ユーザーの許可、トークン無しのログインを許すオプションを付けているので、閉じた環境のみで使うなどの注意はしてください。&lt;/p&gt;
&lt;h2 id="必要なパッケージを毎回追加するのは面倒"&gt;必要なパッケージを毎回追加するのは面倒
&lt;/h2&gt;&lt;p&gt;→ Dockerイメージをカスタマイズ&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://kuma-emon.com/posts/it/pc/1803/" &gt;前回の様な事&lt;/a&gt;をする場合、毎回パッケージをインストールするのは面倒なので、追加済みの Docker イメージを作っておくと便利です。&lt;/p&gt;
&lt;p&gt;ということで以下のような Dockerfile を作成して、パッケージを追加済みのイメージを作りました。今回追加したパッケージは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sqlite3&lt;/li&gt;
&lt;li&gt;scikit-learn&lt;/li&gt;
&lt;li&gt;mplfinance&lt;/li&gt;
&lt;li&gt;yahooquery&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM continuumio/anaconda3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RUN apt-get update &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get install --no-install-recommends -y &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sqlite3 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get clean &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -r /var/lib/apt/lists/* &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RUN pip install --upgrade pip &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pip install scikit-learn &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pip install mplfinance &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pip install yahooquery
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RUN conda install jupyter -y --quiet &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mkdir -p /opt/notebooks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WORKDIR /opt/notebooks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EXPOSE &lt;span class="m"&gt;8888&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ENTRYPOINT &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;jupyter&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;lab&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--ip=&amp;#39;*&amp;#39;&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--port=8888&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--no-browser&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--allow-root&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--NotebookApp.token=&amp;#39;&amp;#39;&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;--notebook-dir=/opt/notebooks&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で、この Dockerfile のあるディレクトリで&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker image build -t myjn -f Dockerfile .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすれば、イメージが作成できます。イメージの名前は myjn にしてみました。&lt;br&gt;
実行する場合は、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 8888:8888 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v &lt;span class="nv"&gt;$PWD&lt;/span&gt;/notebooks:/opt/notebooks &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --rm &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; myjn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で OK です。Docker 停止後も JupterLab で作成したファイルが残るように、ホストPC の ./notebooks ディレクトリを使うようにしています。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/08/localhost_8888_lab-1024x690.png"&gt;&lt;/p&gt;
&lt;p&gt;今週、ちょっと株価戻ったんですね。&lt;/p&gt;
&lt;p&gt;2023/12/08 追記&lt;br&gt;
起動時の &amp;ldquo;Would you like to receive official Jupyter news?&amp;rdquo; という通知を止めるには、次のコマンドを先に実行しておきます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jupyter labextension disable &lt;span class="s2"&gt;&amp;#34;@jupyterlab/apputils-extension:announcements&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例えば以下の様になります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -it -p 8888:8888 continuumio/anaconda3 /bin/bash -c &lt;span class="s2"&gt;&amp;#34;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; conda install jupyter -y --quiet &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mkdir -p /opt/notebooks &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; jupyter labextension disable &amp;#34;&lt;/span&gt;@jupyterlab/apputils-extension:announcements&lt;span class="s2"&gt;&amp;#34; &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; jupyter lab \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --notebook-dir=/opt/notebooks --ip=&amp;#39;*&amp;#39; --port=8888 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --no-browser --allow-root \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; --NotebookApp.token=&amp;#39;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;a href="https://www.amazon.co.jp/dp/B08D8TXXHD" target="_blank" rel="noopener" class="affi-link"&gt;Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) (Amazon)&lt;/a&gt;</description></item><item><title>UpdraftPlus によるバックアップを Docker に復元するには</title><link>https://kuma-emon.com/posts/it/pc/1186/</link><pubDate>Sat, 29 May 2021 19:59:00 +0900</pubDate><guid>https://kuma-emon.com/posts/it/pc/1186/</guid><description>&lt;img src="https://kuma-emon.com/" alt="Featured image of post UpdraftPlus によるバックアップを Docker に復元するには" /&gt;&lt;p&gt;WordPress のバックアップを UpdraftPlus で取っていますが、復元できるか確認します。&lt;br&gt;
復元先にはローカルの Docker を使います。&lt;/p&gt;
&lt;h2 id="復元先の-wordpress-をdocker-で用意する"&gt;復元先の WordPress をDocker で用意する
&lt;/h2&gt;&lt;p&gt;公式のサンプル等を参考に以下の docker-compose.yml を用意しました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;version: &amp;#39;3&amp;#39;

services:
 db:
 image: mysql@sha256:68b207d01891915410db3b5bc1f69963e3dc8f23813fd01e61e6d7e7e3a46680
 volumes:
 - ./mysql:/var/lib/mysql
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: somewordpress
 MYSQL_DATABASE: wordpress
 MYSQL_USER: wordpress
 MYSQL_PASSWORD: wordpress

 wordpress:
 depends_on:
 - db
 image: wordpress:latest
 volumes:
 - ./html:/var/www/html
 ports:
 - &amp;#34;80:80&amp;#34;
 restart: always
 environment:
 WORDPRESS_DB_HOST: db:3306
 WORDPRESS_DB_USER: wordpress
 WORDPRESS_DB_PASSWORD: wordpress
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;mysql のイメージが latest で無いのは Apple silicon に対応してない為で、回避策として latest のダイジェストを指定しています。&lt;/p&gt;
&lt;h2 id="docker-コンテナを起動して-wordpress-を初期化する"&gt;Docker コンテナを起動して WordPress を初期化する
&lt;/h2&gt;&lt;p&gt;下記コマンドで起動します。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;docker compose up -d --remove-orphans
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;しばらく待つと、http://localhost/ で WordPress の初期設定を行うページが開けるので、そのまま初期設定を行います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;言語を選択&lt;/li&gt;
&lt;li&gt;必要情報を入力（仮の値でOK。復元が済むまでの一時的なもの。）&lt;/li&gt;
&lt;li&gt;WordPress をインストール&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;インストールが完了したら、ログイン画面になるのでログインしておきます。&lt;/p&gt;
&lt;h2 id="updraftplus-プラグインを追加する"&gt;UpdraftPlus プラグインを追加する
&lt;/h2&gt;&lt;p&gt;WordPress の左サイドのメニューから「プラグイン」し、「新規追加」をクリック。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/plugin_add.jpg"&gt;&lt;/p&gt;
&lt;p&gt;プラグインを検索するテキストボックスで「UpdraftPlus」を検索し、見つかった「UpdraftPlus WordPress Backup Plugin」の「今すぐインストール」をクリック。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/updraftPlus-1024x345.jpg"&gt;&lt;/p&gt;
&lt;p&gt;「UpdraftPlus」の「有効化」をクリック。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/UpdraftPlusActive.jpg"&gt;&lt;/p&gt;
&lt;h2 id="バックアップしたファイルを取得する"&gt;バックアップしたファイルを取得する
&lt;/h2&gt;&lt;p&gt;自分の場合は Google ドライブにバックアップしているので、直近のバックアップである下記ファイルをダウンロードしました。（ファイル名を一部変更しています。）&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-db.gz
backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-others.zip
backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-plugins.zip
backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-themes.zip
backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-uploads.zip
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="バックアップした一部のファイルを書き換える"&gt;バックアップした一部のファイルを書き換える
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-db.gz&amp;rdquo; を解凍したファイルをテキストエディタで開き、一括置換します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;a class="link" href="https://kuma-emon.com" target="_blank" rel="noopener"
 &gt;https://kuma-emon.com&lt;/a&gt;&amp;rdquo; → &amp;ldquo;http://localhost&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;https%3A%2F%2Fkuma-emon.com&amp;rdquo; → &amp;ldquo;http%3A%2F%2Flocalhost&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他にも &amp;ldquo;kuma-emon.com&amp;rdquo; が見つかりましたが、投稿を救い出す分には問題なさそうなので、そのままにしました。&lt;/p&gt;
&lt;h2 id="updraftplus-にバックアップファイルをアップロードして復元する"&gt;UpdraftPlus にバックアップファイルをアップロードして復元する
&lt;/h2&gt;&lt;p&gt;「設定」の「UpdraftPlus バックアップ」にある「バックアップファイルをアップロード」をクリックし、バックアップファイルをアップロードします。&lt;br&gt;
※ backup_2021-05-28-1546_kumaemoncom_6fc7e15e487e-db.gz はアップロードせず、書き換えたテキストファイルの方をアップロードします。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/UpdraftPlusSetting-1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;アップロードしたバックアップの「復元」をクリック。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/84a3ec9f0e4cf40f568ba07bedb8c1a5-1024x140.jpg"&gt;&lt;/p&gt;
&lt;p&gt;「復元するコンポーネントを選択」を全て選択して「次」で進めていきます。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/restore1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;「UpdraftPlus 設定に戻る」をクリックするとログインになります。&lt;br&gt;
ログインに使うアカウントは、復元したサイトで使っているものを入力します。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://kuma-emon.com/images/2021/05/restore2.jpg"&gt;&lt;/p&gt;
&lt;h2 id="復元の状態を確認する"&gt;復元の状態を確認する
&lt;/h2&gt;&lt;p&gt;ざっと見た感じでは、テーマのスキンが未選択になった程度で選択し直せば大丈夫でした。&lt;br&gt;
自分の場合は投稿と画像が復元できれば十分と思っているのでこれでOKですが、ご自身が必要と思うものが復元されているか確認しましょう。&lt;/p&gt;</description></item><item><title>WordPress のバックアップを Docker に復元してみた</title><link>https://kuma-emon.com/posts/it/pc/413/</link><pubDate>Sat, 08 May 2021 20:57:00 +0900</pubDate><guid>https://kuma-emon.com/posts/it/pc/413/</guid><description>&lt;img src="https://kuma-emon.com/" alt="Featured image of post WordPress のバックアップを Docker に復元してみた" /&gt;&lt;p&gt;WordPress のバックアッププラグイン「BackWPup」で自動バックアップをしていますが、自分で戻せるのか試してみました。BackWPup Pro では無いので手動です。&lt;/p&gt;
&lt;h2 id="サービス側も自動バックアップしている"&gt;サービス側も自動バックアップしている
&lt;/h2&gt;&lt;p&gt;このブログは CohoHa WING を利用しているので、サーバー側で過去１４日分の自動バックアップが取られています。&lt;br&gt;
操作の間違いや失敗があって戻したい場合はそれを利用する方が簡単・確実です。&lt;/p&gt;
&lt;h2 id="復元先に-docker-を使用"&gt;復元先に Docker を使用
&lt;/h2&gt;&lt;p&gt;お試しサーバーは Docker で立ち上げるのがお手軽です。&lt;br&gt;
なので、公式のサンプル等を参考に以下の docker-compose.yml を用意しました。&lt;br&gt;
また、docker-compose.yml を置いたディレクトリに「mysql」「html」ディレクトリは手動で作成しておきます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;version: &amp;#39;3&amp;#39;

services:
 db:
 image: mysql@sha256:bbeff35b63bf28aeb024de309aab2d501f8aa30e94664d3840d55b36c8db53c8
 volumes:
 - ./mysql:/var/lib/mysql
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: somewordpress
 MYSQL_DATABASE: wordpress
 MYSQL_USER: wordpress
 MYSQL_PASSWORD: wordpress

 wordpress:
 depends_on:
 - db
 image: wordpress:latest
 volumes:
 - ./html:/var/www/html
 ports:
 - &amp;#34;80:80&amp;#34;
 restart: always
 environment:
 WORDPRESS_DB_HOST: db:3306
 WORDPRESS_DB_USER: wordpress
 WORDPRESS_DB_PASSWORD: wordpress
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;mysql のイメージが latest で無いのは Apple silicon に対応してない為で、回避策として latest（お試し時の最新） のダイジェストを指定しています。&lt;br&gt;
起動してしばらく待つと、http://localhost/ で WordPress の初期設定ページ（言語選択）が開けました。&lt;br&gt;
初期状態が確認できたので、一旦Dockerコンテナーは停止してバックアップから復元してみます。&lt;/p&gt;
&lt;h2 id="バックアップのダウンロード"&gt;バックアップのダウンロード
&lt;/h2&gt;&lt;p&gt;バックアップ対象の WordPress のメニューから、BackWPup → バックアップ を選択して、バックアップしたファイルをダウンロードします。&lt;br&gt;
自分は .tar.gz にしているのでダウンロード後に解凍します。できたファイルとディレクトリは以下でした。（一部のファイル名は伏せ字）&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;backwpup_readme.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pluginlist.2021-05-03.txt
error
index.php
license.txt
manifest.json
xxxxxxxxxxxxxx.sql
readme.html
wp-activate.php
wp-admin
wp-blog-header.php
wp-comments-post.php
wp-config-sample.php
wp-config.php
wp-content
wp-cron.php
wp-includes
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="バックアップから復元"&gt;バックアップから復元
&lt;/h2&gt;&lt;p&gt;解凍してできた、&lt;br&gt;
・ xxxxxxxxxxxxxx.sql は mysql ディレクトリにコピー&lt;br&gt;
・その他のファイルは html ディレクトリに上書きコピー&lt;br&gt;
　但し、コピー先の wp-config.php は予め退避しておきます。後で内容のコピーに使います。&lt;/p&gt;
&lt;h2 id="wp-configphp-の修正"&gt;wp-config.php の修正
&lt;/h2&gt;&lt;p&gt;バックアップから戻した wp-config.php ファイルに、退避した wp-config.php の先頭から DB_COLLATE の定義がある範囲を上書きします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * The base configuration for WordPress
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * The wp-config.php creation script uses this file during the
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * installation. You don&amp;#39;t have to use the web site, you can
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * copy this file to &amp;#34;wp-config.php&amp;#34; and fill in the values.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * This file contains the following configurations:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * * MySQL settings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * * Secret keys
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * * Database table prefix
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * * ABSPATH
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * @link https://codex.wordpress.org/Editing_wp-config.php
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * @package WordPress
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// a helper function to lookup &amp;#34;env_FILE&amp;#34;, &amp;#34;env&amp;#34;, then fallback
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;getenv_docker&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;// https://github.com/docker-library/wordpress/issues/588 (WP-CLI will load this file 2x)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$fileEnv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$env&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_FILE&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;rtrim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file_get_contents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$fileEnv&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$env&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$val&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$default&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ** MySQL settings - You can get this info from your web host ** //
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** The name of the database for WordPress */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wordpress&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** MySQL database username */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_USER&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_USER&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;example username&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** MySQL database password */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_PASSWORD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_PASSWORD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;example password&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * Docker image fallback values above are sourced from the official WordPress installation wizard:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * https://github.com/WordPress/WordPress/blob/f9cc35ebad82753e9c86de322ea5c76a9001c7e2/wp-admin/setup-config.php#L216-L230
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; * (However, using &amp;#34;example username&amp;#34; and &amp;#34;example password&amp;#34; in your database is strongly discouraged. Please use strong, random credentials!)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** MySQL hostname */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_HOST&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_HOST&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;mysql&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** Database Charset to use in creating database tables. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_CHARSET&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_CHARSET&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;utf8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt;/** The Database Collate type. Don&amp;#39;t change this if in doubt. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DB_COLLATE&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getenv_docker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;WORDPRESS_DB_COLLATE&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="データベースの復元"&gt;データベースの復元
&lt;/h2&gt;&lt;p&gt;xxxxxxxxxxxxxx.sql に URL が書かれている所があるので変更します。&lt;br&gt;
&lt;code&gt;https://kuma-emon.com&lt;/code&gt; を &lt;code&gt;http://localhost&lt;/code&gt; に置換しました。&lt;/p&gt;
&lt;p&gt;Dockerコンテナーを起動し、mysqlのコンテナーに接続してファイルから復元します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -u wordpress -D wordpress -p &amp;lt; /var/lib/mysql/xxxxxxxxxxxxxx.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="それなりに復元できたが"&gt;それなりに復元できたが
&lt;/h2&gt;&lt;p&gt;利用できないプラグインが（BackWPup）ありました。&lt;br&gt;
デザインも初期値になったものがあり、管理画面から再設定が必要でした。&lt;/p&gt;
&lt;p&gt;記事や画像は復元できたので、もしもの際に使えそうです。&lt;/p&gt;</description></item></channel></rss>