Create and run Rails app using Docker
Bài đăng này đã không được cập nhật trong 4 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 console
Và chạy lệnh:docker-compose run
để buld app nhé
Chúc các bạn thành công ^.^
All rights reserved