<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MySQL &#8211; blog.fukata.org</title>
	<atom:link href="/archives/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>旅するプログラマ</description>
	<lastBuildDate>Fri, 11 Aug 2017 23:14:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.6</generator>
	<item>
		<title>このサイトにdockerを使ってみた</title>
		<link>/archives/7969/</link>
					<comments>/archives/7969/#respond</comments>
		
		<dc:creator><![CDATA[fukata]]></dc:creator>
		<pubDate>Tue, 27 Dec 2016 15:52:30 +0000</pubDate>
				<category><![CDATA[開発]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[h2o]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://dev.fukata.org/?p=7969</guid>

					<description><![CDATA[前回、h2o+phpのdockerイメージを練習がてらに作ってみたので今回はそれを使ってこの主にWordPressで構成されたサイトをdockerコンテナを使ってみた。 広告 構成 前回とほとんど構成 ... <a href="/archives/7969/"> 続きを読む</a>]]></description>
										<content:encoded><![CDATA[<p><a href="/archives/7969/"><img src="https://farm1.staticflickr.com/430/31834794276_e4d08e5f90_c.jpg" alt="PC263121" class="aligncenter"/></a></p>
<p>前回、h2o+phpのdockerイメージを練習がてらに作ってみたので今回はそれを使ってこの主にWordPressで構成されたサイトをdockerコンテナを使ってみた。</p>
<p><span id="more-7969"></span></p>
<div class="ad_section"><div class="ad_title">広告</div><div class="ad_body"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- blog-content-bottom1 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-9703571485671477"
     data-ad-slot="4353022998"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div></div>
<h2>構成</h2>
<p>前回とほとんど構成は変わってない。</p>
<ul>
<li>Digital Ocean Singapore 512MB</li>
<li>Ubuntu 16.04 LTS</li>
<li>MySQL 5.7</li>
<li>Redis 3.2</li>
<li>h2o 2.1.0-beta4</li>
<li>php 7.0.14</li>
</ul>
<h2>dockerイメージ</h2>
<p>使ったdockerイメージは下記。</p>
<ul>
<li><a href="https://hub.docker.com/_/mysql/">mysql:5.7</a></li>
<li><a href="https://hub.docker.com/_/redis/">redis:3.2</a></li>
<li><a href="https://hub.docker.com/r/fukata/h2o-php/">fukata/h2o-php</a></li>
</ul>
<p>/var/www 以下にあるWordPressやその他のWEBに公開しているファイルは現状はコンテ化出来ていないのでそのままホストに置いている状態となっている。</p>
<p>これもコンテナ化しようかと思ったんだけどWordPress自身でのアップデートとかもあるしローカルで変更してイメージ化して再アップってのが個人で運営するブログ程度だと面倒くささが勝ちそうだったので良い案が思い浮かぶまでとりあえずホスト側に置くことにした。</p>
<p>なので、h2o-phpコンテナとはvolumeに指定してマウントしている。</p>
<h2>wp-config.php</h2>
<p>h2o-phpコンテナからmysql,redisコンテナにアクセスするために下記のような設定を行っている。</p>
<p>docker runのlinkオプションに他コンテナを指定することで環境変数に色々定義されるのでそれを使う。</p>
<pre lang="php">
/** MySQL hostname */
define('DB_HOST', getenv('DB_PORT_3306_TCP_ADDR') ?: 'localhost');

// redis
define('WP_REDIS_HOST', getenv('REDIS_PORT_6379_TCP_ADDR') ?: 'localhost');
define('WP_REDIS_PORT', getenv('REDIS_PORT_6379_TCP_PORT') ?: '6379');
</pre>
<p>今回、初めてphpの <em>?:</em> という演算子を知った。<br />
いわゆるデフォルト値を定義してあげる時に便利なやつ。</p>
<h2>ansible</h2>
<p>ansibleのタスクからdockerコンテナの部分だけ抜粋。</p>
<pre lang="yaml">
- name: Create mysql container
  docker_container:
    name: db
    image: mysql:5.7
    pull: true
    restart: yes
    restart_policy: always
    env:
      MYSQL_ALLOW_EMPTY_PASSWORD: YES
      MYSQL_USER: "{{ db_user }}"
      MYSQL_PASSWORD: "{{ db_password }}"
    ports:
      - 127.0.0.1:3306:3306
    volumes:
      - /var/lib/mysql:/var/lib/mysql
      - /etc/mysql:/etc/mysql
  tags: mysql

- name: Create redis container
  docker_container:
    name: redis
    image: redis:3.2
    pull: true
    restart: yes
    restart_policy: always
    ports:
      - 127.0.0.1:6379:6379
    volumes:
      - /etc/redis:/etc/redis
  tags: redis

- name: Create h2o container
  docker_container:
    name: h2o
    image: fukata/h2o-php
    pull: true
    restart: yes
    restart_policy: always
    ports:
      - 0.0.0.0:80:80
      - 0.0.0.0:443:443
    links:
      - db
      - redis
    volumes:
      - /var/www:/var/www
      - /var/log/h2o:/var/log/h2o
      - /etc/h2o:/etc/h2o
      - /etc/letsencrypt:/etc/letsencrypt
  tags: h2o

</pre>
<h2>まとめ</h2>
<p>今回、DigitalOceanのインスタンスを512MBプランに変更してみたんだけど普通に動いてるっぽい。かなりギリギリになってるので何かあるとすぐいっぱいになってしまいそうな不安はあるけど。</p>
<p>とりあえず、今年中にやりたかったdockerコンテナを使ってサイトを公開出来たのは良かった。</p>
<p>そろそろEC2に移行しようかな。どうせならterraformなど使って移行したい。</p>
]]></content:encoded>
					
					<wfw:commentRss>/archives/7969/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<image>https://farm1.staticflickr.com/430/31834794276_e4d08e5f90.jpg</image>
	</item>
		<item>
		<title>MySQL：NULLセーフな比較演算子</title>
		<link>/archives/900/</link>
					<comments>/archives/900/#respond</comments>
		
		<dc:creator><![CDATA[fukata]]></dc:creator>
		<pubDate>Fri, 30 Jan 2009 08:40:29 +0000</pubDate>
				<category><![CDATA[開発]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">http://fukata.org/?p=900</guid>

					<description><![CDATA[MySQLの「=」や「&#60;&#62;」はNULLセーフではない。どういうことかと言うと、比較対象の値がNULLの場合、0または1ではなく、NULLが結果として戻り、ヒットしないということになる。 M ... <a href="/archives/900/"> 続きを読む</a>]]></description>
										<content:encoded><![CDATA[<p>MySQLの「=」や「&lt;&gt;」はNULLセーフではない。どういうことかと言うと、比較対象の値がNULLの場合、0または1ではなく、NULLが結果として戻り、ヒットしないということになる。</p>
<p>MySQLでは、以下のような構文でNULLセーフを実現している。構文については使用するRDBSによって異なるので注意</p>
<blockquote><p>「=」のNULLセーフ： 値１ &lt;=&gt; 値2</p>
<p>「&lt;&gt;」のNULLセーフ： NOT 値１ &lt;=&gt; 値2</p></blockquote>
<p>■参考サイト</p>
<ul>
<li><a href="https://dev.mysql.com/doc/refman/4.1/ja/comparison-operators.html">https://dev.mysql.com/doc/refman/4.1/ja/comparison-operators.html</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>/archives/900/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
