Hành trình cùng cá voi xanh - Áp dụng docker-compose
TIL
499
Male avatar

manhdung viết ngày 29/07/2016

TIếp tục bài viết http://kipalog.com/posts/Hanh-trinh-cung-ca-voi-xanh---Dockerize-app Mình sẽ thử áp dụng docker compose cho app này. Bằng cách sử dụng docker compose tất cả tham số cần thiết khi truyền vào docker run, thứ tự chạy các image, tạo network gì... sẽ được đưa vào kịch bản hết. Kịch bản đó có dạng một file yml.

Đây là file docker-compose.yml của mình

version: '2'
services:
  web:
    image: nginx
    hostname: web.simple.flask
    domainname: example.com
    ports:
     - "80:80"
    volumes:
     - ./web/nginx/simple_flask.conf:/etc/nginx/conf.d/simple_flask.conf
    depends_on:
     - app
    networks:
     - my-net
  app:
    build: ./code
    hostname: app.simple.flask
    domainname: example.com
    networks:
    - my-net
networks:
  my-net:

Toàn bộ qúa trình tạo network, build image, chạy các image theo thứ tự, các tham số cần thiết cho mỗi docker run đều nằm trong file yml trên.

Ở đây networks là my-net
Có hai service, tương ứng hai container. Cả hai service đều dùng chung network my-net.

Tên container được lấy theo tên thư mục chứa file docker-compose.yml và tên service khai báo trong docker-compose.yml. Mình đặt trong thư mục simple_flask nên các container sẽ có tên là simpleflask_web_1 và simpleflask_app_1 Để web tham chiếu được app, mình đã phải sửa upstream nginx trong web/nginx/simple_flask.conf

Không nên dùng container_name trong kịch bản docker compose vì đó là fixed name. Bạn không thể dùng docker compose để scale out app do conflict container name.

hostname và domainname dùng để set hostname cho mỗi container và set /etc/hosts cho mỗi container. Ví dụ container có tên là simpleflask_web_1 sẽ có /etc/hosts được bổ sung

172.22.0.2 web.simple.flask web.simple.flask.example.com

Bạn chỉ cần cài docker compose. Hiện tại là bản 1.8.0. Sau đó, chạy docker-compose up là xong. Nhờ sử dụng docker, toàn bộ môi trường được đóng gói cùng app nên việc chạy app chưa bao giờ đơn giản hơn thế.

Tham khảo:
https://gitlab.com/cuongtran/docker-counter/tree/develop
https://github.com/docker/example-voting-app

manhdung 29-07-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

manhdung

44 bài viết.
240 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
67 11
Giới thiệu RabbitMQ là một message broker ( messageoriented middleware) sử dụng giao thức AMQP Advanced Message Queue Protocol (Đây là giao thức ph...
manhdung viết hơn 2 năm trước
67 11
Male avatar
45 4
Giả định bạn tiếp nhận một server mới toanh, bạn cần tìm một số thông tin về nó như loại CPU, loại main, loại memory, memory dùng của hãng nào... c...
manhdung viết hơn 1 năm trước
45 4
Male avatar
38 7
Giới thiệu MongoDB là một giải pháp nosql database. Data được lưu ở dạng các bson document. Hỗ trợ vertical scaling và horizontal scaling, dynamic...
manhdung viết hơn 2 năm trước
38 7
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
White
8 0
Lấy fake path của file trong html input Ngữ cảnh: em cần làm một cái nút tải ảnh lên có preview. GIải pháp đầu: Dùng (Link) đọc file ảnh thành ba...
Hoàng Duy viết gần 2 năm trước
8 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
44 bài viết.
240 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!