gocha124の日記

ごちゃごちゃ書きます

Dockerコンテナの連携(同一ホスト)

mkdir ~/build_mysql
vi ~/build_mysql/Dockerfile

FROM enakai00/centos:centos6
MAINTAINER txcdb738

ENV HOME /root
RUN yum -y install mysql-server
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh

EXPOSE 3306
CMD ["/usr/local/bin/init.sh"]

vi ~/build_mysql/init.sh
#!/bin/bash

service mysqld start

cat <<EOF >>~/.bashrc
trap 'service mysqld stop; exit 0' TERM
EOF
exec /bin/bash

docker build -t txcdb738/mysql:ver1.0 ~/build_mysql
docker run -itd --name mysql01 txcdb738/mysql:ver1.0
docker attach mysql01
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'nodeuser'@'localhost';"
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'nodeuser'@'%' IDENTIFIED BY 'pas4mysql';"
mysql -u nodeuser -e "CREATE DATABASE shorturl_service;"
mysql shorturl_service -u nodeuser -e " ¥
CREATE TABLE url_list ( ¥
  hash CHAR(2) PRIMARY KEY, ¥
  url VARCHAR(256) UNIQUE NOT NULL COLLATE utf8_bin ¥
);"

cd ~
git clone https://github.com/enakai00/build_shorturl
cd build_shorturl
git checkout dockerbon
cp pre-commit .git/hooks/
git commit -a -m "Commit to build an image."


~/build_shorturl/Dockerfile

FROM enakai00/centos:centos6
MAINTAINER txcdb738

RUN yum -y install epel-release
RUN yum -y install nodejs nodejs-mysql nodejs-ejs nodejs-express
RUN mkdir /root/app
ADD app /root/app
ADD init.sh /usr/local/bin/init.sh
RUN chmod u+x /usr/local/bin/init.sh

ENV NODE_DBNAME shoturl_service
ENV NODE_DBUSER nodeuser
ENV NODE_DBPASS pas4mysql
ENV NODE_PATH /usr/lib/node_modules

CMD ["/usr/local/bin/init.sh"]

~/build_shorturl/init.sh

#!/bin/bash

cd /root/app
node server.js &

cat <<EOF >>~/.bashrc
trap 'pkill-TERM node; sleep 3; exit 0' TERM
EOF
exec /bin/bash

~/build_shorturl/app/server.js

var LISTEN = '0.0.0.0;
var HOSTNAME = 'localhost';
var PORT = 80;

var DBHOST = process.env.DB_PORT_3306_TCP_ADDR;
var DBPORT = process.env.DB_PORT_3306_TCP_PORT;
var DBNAME = process.env.NODE_DBNAME;
var DBUSER = process.env.NODE_DBUSER;
var DBPASS = process.env.NODE_DBPASS;

var sys = require('sys),
      express = require('express'),
      ejs = require('ejs'),
      mysql = require('mysql'),
      crypto = require('crypto')

function db_access(callback) {
  var client = mysql.createConnection({
                                    host: DBHOST,
                                    port: DBPORT,
                                    user: DBUSER,
                                    password: DBPASS,
                                    database: DBNAME
                });

docker run -itd -p 8000:80 --link mysql01:db --name shorturl01 txcdb738/shorturl:ver1.0
docker run -itd --name mysql01 --expose 3306 txcdb738/mysql:ver1.0