Create and run Rails app using Docker
Bài đăng này đã không được cập nhật trong 5 năm
Trong docker 1 image chỉ chứa 1 container. Đây là cách để thao tác đơn giản và dễ dàng lắp ghép với nhau hơn. Tuy nhiên, nếu yêu cầu 1 hệ thống gồm nhiều containers phức tạp và liên kết chặt chẽ với nhau về thứ tự, config, … thì docker là không đủ. Và thế là chúng ta có thêm docker-compose.
docker-compose cũng dùng file YML để định nghĩa, nên việc đọc hiểu là rất đơn giản.
1. Cài đặt Docker
- Update apt sources
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
- Thêm GPG key
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
- Thêm Docker repo vào source list
gedit /etc/apt/sources.list.d/docker.list
- Update apt package Bạn có thể sử dụng Nano hoặc Vim thay Gedit. Xóa toàn bộ nội dung của tập tin docker.list ở trên nếu có và sau đó thêm dòng sau:
Với Ubuntu 12.04:
deb https://apt.dockerproject.org/repo ubuntu-precise main
Với Ubuntu 14.04:
deb https://apt.dockerproject.org/repo ubuntu-trusty main
Với Ubuntu 15.10:
deb https://apt.dockerproject.org/repo ubuntu-wily main
Với Ubuntu 16.04:
deb https://apt.dockerproject.org/repo ubuntu-xenial main
Lưu tập tin và thoát khỏi Gedit.
- Cập nhật danh sách package cho Aptitude một lần nữa:
sudo apt-get update
- Cài đặt docker-engine
sudo apt-get install docker-engine
- Khởi động service cho docker
sudo service docker start
2. Cài đặt Compose
- Cài đặt từ source
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Thêm quyền executable cho docker-compose
chmod +x /usr/local/bin/docker-compose
3. Setup Docker
Trong thư mục Rail project ta tạo Dockerfile có nội dung:
# Dockerfile
FROM ruby:2.3.1
RUN apt-get update -qq && apt-get install -y build-essential
RUN mkdir /demo_docker
WORKDIR /demo_docker
ADD Gemfile /demo_docker/Gemfile
ADD Gemfile.lock /demo_docker/Gemfile.lock
RUN bundle install
ADD . /demo_docker
Chỉ định image sử dụng để làm base cho container là ruby 2.3.1 Chạy câu lệnh apt-get update các thành phần liên quan Tạo thư mục /demo_docker và chuyển vào thư mục đó Copy Gemfile và Gemfile.lock vào thư mục Run bundle install
- Compose file
Tạo file docker-compose.yml, đây là file quan trọng nhất chứa đựng toàn bộ magic của compose có nội dung sau:
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/demo_docker
    ports:
      - "3000:3000"
    depends_on:
      - db
Trong thư mục gốc của Rails, để bắt đầu build và khởi động container, chúng ta chạy lệnh:
docker-compose up
- Kết nối database
Default của Rails là chạy db trên localhost vì thế ta cần chỉnh sửa lại file config/database.yml
development: &default
  adapter: postgresql
  database: docker_development
  pool: 5
  username: postgres
  host: db
test:
  <<: *default
  database: docker_test
migrate database bằng lệnh: docker-compose run web rake db:create db:setup
- Thế là đã xong
Các bạn có thể tương tác với console: docker-compose run web rails consoleVà chạy lệnh:docker-compose runđể buld app nhé
Chúc các bạn thành công ^.^
All rights reserved
 
  
 