Create and run Rails app using Docker
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. ...
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 ^.^