MySQL 세팅과 동일하다.
$ vi Gemfile
group :development, :test do
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
end
group :production do
gem 'mysql2'
end
$ bundle
$ vi config/database.yml
production:
adapter: mysql2
encoding: utf8
database: <%= ENV['DB_DATABASE'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %>
https://www.docker.com/docker-machine
$ brew update
$ brew install docker docker-machine
$ brew cask install virtualbox
$ docker-machine create --driver virtualbox dev
$ docker-machine ls
$ eval "$(docker-machine env dev)"
$ docker -v
에러가 발생하면... Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)
$ docker-machine upgrade dev
$ docker run busybox echo hello world
$ docker images
$ docker ps
$ docker ps -a
$ docker run -it ubuntu:14.04 bash
https://hub.docker.com/_/mariadb/
$ docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb
$ docker ps
$ docker run -it --link mariadb:mysql ubuntu:14.04 bash
# env | grep MYSQL_
# apt-get install mysql-client -y
# mysql -h$MYSQL_PORT_3306_TCP_ADDR -P$MYSQL_PORT_3306_TCP_PORT -uroot -p$MYSQL_ENV_MYSQL_ROOT_PASSWORD
mysql> CREATE DATABASE my_test_db CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> exit
$ vi Docker
FROM ubuntu:14.04
WORKDIR /tmp
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y curl git-core build-essential nodejs \
autoconf bison libssl-dev libyaml-dev \
libreadline6-dev zlib1g-dev libncurses5-dev \
libffi-dev libgdbm3 libgdbm-dev \
libmysqlclient-dev && \
rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv && \
git clone https://github.com/sstephenson/ruby-build.git \
~/.rbenv/plugins/ruby-build && \
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
echo 'eval "$(rbenv init -)"' >> ~/.bashrc && \
export PATH="$HOME/.rbenv/bin:$PATH" && \
rbenv install 2.3.0 && \
rbenv global 2.3.0 && \
eval "$(rbenv init -)" && \
gem update --system && \
gem install bundler && \
rbenv rehash && \
rm ruby-build.*.log
ENV RBENV_ROOT /root/.rbenv
ENV PATH $RBENV_ROOT/bin:$RBENV_ROOT/shims:$PATH
ADD Gemfile /tmp/Gemfile
ADD Gemfile.lock /tmp/Gemfile.lock
RUN bundle install --binstubs --without development:test
ADD . /webapp
RUN mv /tmp/.bundle /webapp/ && \
rm -rf /webapp/bin && \
mv /tmp/bin /webapp/
WORKDIR /webapp
ENV RAILS_ENV production
CMD export DB_DATABASE=my_test_db && \
export DB_USERNAME=root && \
export DB_PASSWORD=$MYSQL_ENV_MYSQL_ROOT_PASSWORD && \
export DB_HOST=$MYSQL_PORT_3306_TCP_ADDR && \
export DB_PORT=$MYSQL_PORT_3306_TCP_PORT && \
bin/rake assets:precompile && \
bin/rake db:migrate && \
bin/puma
EXPOSE 9292
$ docker build -t web .
$ docker images
$ docker run -it --link mariadb:mysql web bash
$ docker run --name web --link mariadb:mysql -p 80:9292 -e SECRET_KEY_BASE=this-is-secret -d web
$ docker logs web
$ docker exec -it web bash
# tail -f log/production.log
웹 브라우저로 열어서 보기
$ open http://`docker-machine ip dev`/posts
$ docker ps
$ docker stop web
$ docker rm web