Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (3日目 : DB環境構築編)
前回の記事 (Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (2日目 : 開発環境構築編) - はい!今やってます!) に続いて、DB環境の構築を進めて行きます。PhoenixのデフォルトDBはPostgreDBですが、MariaDBで設定したいと思います。
Docker Image取得
git pull centos
Docker コンテナ作成
docker run --privileged -d -i -t --name=mariadbmaster -e "HOSTNAME=mariadbmaster" -e "TZ=Asia/Tokyo" -e "TERM=dumb" -v /Users/uedayuuji/work/docker_related/workspace:/workspace -p 3306:3306 ${Image_Id} /sbin/init
※systemctlからMariaDBを起動するために--privileged
オプションと/sbin/init
が必要
ログイン
docker exec -it mariadbmaster bash
mariadbのインストール
yum -y install mariadb-server
MariaDBの文字コード設定
vi /etc/my.cnf.d/server.conf > character-set-server=utf8
MariaDB起動
systemctl enable mariadb.service systemctl start mariadb.service mysql_secure_installation
MariaDBログイン
mysql -u root -p
イメージ作成
docker commit mariadbmaster uedayuji/mariadb
Docker Hubにプッシュ
docker login docker push uedayuji/mariadb
Docker Imageはこちらから落とせます(https://hub.docker.com/r/uedayuji/mariadb/)
次の記事(Phoenix × Elixir ×MariaDB × Dockerでjsonを返すAPIを開発する (4日目 : DB設定 & API作成編) - はい!今やってます!)に続きます。
Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (2日目 : 開発環境構築編)
前回のDocker環境構築 ( Phoenix × ElixirでAPIを開発する (1日目 : Docker環境構築編) - はい!今やってます! ) に引き続いて、コンテナ内で開発環境を構築していきます。
Linuxの環境確認
uname -a
Localeの設定
localectl set-locale LANG=ja_JP.utf8 localectl status
wgetをインストール
yum install wget
Erlangを落とす
wget http://www.erlang.org/download/otp_src_18.2.tar.gz tar zxvf otp_src_18.2.tar.gz cd otp_src_18.2
※バージョンは適宜確認して最新のものを落とすようにして下さい。
依存関係ライブラリをインストール
yum install -y git gcc openssl openssl-devel ncurses ncurses-devel unixODBC unixODBC-devel gcc fop inotify-tools java-1.7.0-openjdk-devel gcc-c++
コンパイル&確認
./configure make make install erl
Elixirのインストール
cd /usr/local/lib git clone https://github.com/elixir-lang/elixir.git cd elixir make clean test vi ~/.bashrc > PATH="$PATH":/usr/local/lib/elixir/bin/ source ~/.bashrc iex
Hexインストール
mix local.hex
Node.jsをインストール
yum install epel-release yum install nodejs npm --enablerepo=epel npm install -g n n stable
Phoenixをインストール
git clone https://github.com/phoenixframework/phoenix.git && cd phoenix && git checkout v1.1.0 && mix do deps.get, compile
※バージョンは適宜最新のものを利用して下さい。
ライブラリローディングようのライブラリ(?)
yum install inotify-tools
テストアプリケーション作成
cd /usr/local/lib/elixir/phoenix/installer mix phoenix.new /var/www/${App_Name}
※MariaDBを使用したいので、実際はこのコマンドを実行しています。
mix phoenix.new /var/www/${App_Name} --database mysql
MariaDBインストール
yum -y install mariadb-server
サーバ起動
cd /var/www/${App_Name} vi config/dev.exs > (編集内容 : Portを80番を指定) mix phoenix.server
定義されているルーティングの確認
mix phoenix.routes
ブラウザからアクセス
http://${Docker_Ip}:8080/
Docker Image(api)をDocker Hubで公開
docker commit api uedayuji/phoenix docker images docker login docker push uedayuji/phoenix
こちら(Docker Hub)にDocker Imageは公開しています。
今日はここまで
こちらの記事(Phoenix × ElixirでAPIを開発する (3日目 : DB環境構築編) - はい!今やってます!)に続きます。
Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (1日目 : Docker環境構築編)
PhoenixとElixirでAPIを開発したい。
Macのローカルに開発環境を立てる。
boot2dockerを落とす
http://boot2docker.io/
1. パッケージファイルが落ちて来たら流れに沿ってインストール
2. boot2dockerのアイコンをクリックして実行
パラメータ設定
$(boot2docker shellinit)
Dockerプロセス確認
docker ps
Docker Hubのアカウントを作成する
Docker Imageをpullする
docker pull centos
※centosは適当です。ただしOfficial
Docker Imageを確認
docker images
Dockerコンテナ作成
docker run --privileged -d -i -t --name=${Container_Name} -v ${Host_Path}:${Container_Path} -p ${Host_Port}:${Container_Port} ${Image_Id} /sbin/init
例1) : docker run --privileged -d -i -t --name=api -v $HOME/work/docker_related/workspace:/var/www -p 8080:80 6ffc02088cb8 /sbin/init
例2) : docker run --privileged -d -i -t -e "HOSTNAME=api" -e "TZ=Asia/Tokyo" --name=api --link=mariadbmaster:mariadbmaster -v $HOME/work/docker_related/workspace:/var/www -p 8080:80 6ffc02088cb8 /sbin/init
コンテナ一覧を確認
docker ps -a
ミスった時用コンテナ破棄コマンド
docker rm `docker ps -a -q`
bashでログイン
docker exec -it api bash
今日はここまで
こちら ( Phoenix × ElixirでAPIを開発する (2日目 : 開発環境構築編) - はい!今やってます! ) に続きます。