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