Docker – Fullstack Station https://fullstackstation.com Hướng dẫn lập trình, thiết kế, lập trình web, thiết kế web, lập trình javascript, lập trình fullstack từ cơ bản đến nâng cao Tue, 17 Dec 2019 06:14:16 +0000 vi hourly 1 https://wordpress.org/?v=6.8.3 https://fullstackstation.com/wp-content/uploads/2019/08/favicon.ico Docker – Fullstack Station https://fullstackstation.com 32 32 FastAPI: triển khai bằng Docker https://fullstackstation.com/fastapi-trien-khai-bang-docker/ https://fullstackstation.com/fastapi-trien-khai-bang-docker/#comments Fri, 17 May 2019 23:00:17 +0000 http://fullstackstation.com/?p=1689 Tiếp theo bài giới thiệu FastAPI, Fullstack Station tiếp tục với triển khai FastAPI bằng Docker. Nhiệm vụ này khá đơn giản và nhanh chóng nhưng mang lại hiệu quả rất lớn. Cấu trúc thư mục Giả sử chúng ta có cấu trúc thư mục như sau: Với nội dung của Dockerfile như sau: Ở […]

The post FastAPI: triển khai bằng Docker appeared first on Fullstack Station.

]]>
Tiếp theo bài giới thiệu FastAPI, Fullstack Station tiếp tục với triển khai FastAPI bằng Docker. Nhiệm vụ này khá đơn giản và nhanh chóng nhưng mang lại hiệu quả rất lớn.

Cấu trúc thư mục

Giả sử chúng ta có cấu trúc thư mục như sau:

.
├── Dockerfile
├── app
│   ├── db.py
│   └── main.py
├── requirements.txt
├── test.db #RISKY, đừng bao giờ lưu trữ dữ liệu trong container.

Với nội dung của Dockerfile như sau:

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

COPY requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY ./app /app

Ở đây, bạn chú ý file requirements.txt được tách riêng COPY trước, mục đích là để Docker không cần phải build lại layer này nếu không có gì thay đổi. Như vậy, Docker sẽ tận dụng lại cache của các layer cũ và việc build sẽ nhanh hơn rất nhiều. (Tham khảo tại đây). File requirements.txt sẽ chứa các package được sử dụng trong api.

Thực hiện build image

Phần này đơn giản thôi, sau khi đã có Dockerfile rồi, thì tiến hành build image với lệnh:

 docker build -t test-fastapi-image .

Việc build khá nhanh, tuy nhiên phần image gốc nặng gần 1Gb nên nếu mạng chậm bạn phải chờ 1 chút.

Tiến hành thực thi

Sau khi build xong nếu không có vấn đề gì thì chạy thử xem nhé:

docker run -d --name my-fastapi-container -p 8000:80 test-fastapi-image

Ở đây mình map port 8000 (máy chủ) vào port 80 (của container), sau đó máy chủ sẽ dùng nginx như 1 proxy chuyển request vào container.

Với lệnh trên thành công, chúng ta truy cập tại địa chỉ IP của “máy chủ” ví dụ 127.0.0.1:8000 sẽ có kết quả của API như việc chạy ở bước development uvicorn main:app --reload, hoặc các tài liệu tương tác trực quan như http://127.0.0.1:8000/docs hay http://127.0.0.1:8000/redocs . Điểm quan trọng là chúng ta đã build thành công docker cho api, việc tiếp theo sẽ đưa image lên môi trường production. Việc đưa image lên production có nhiều cách và sẽ được nói trong một bài viết khác.

Fullstack Station Tips

  • Phần docker cho FastAPI được làm rất tốt, nên việc deploy sau này sẽ rất dễ dàng, chỉ đơn giản là lặp lại các thao tác build, deploy mà không cần phải quan tâm các phần khác như sử dụng hypercorn hay unicorn, bao nhiêu workers…
  • Nhiều bạn hay sử dụng pip freeze > requirements.txt để tạo file “requirements.txt”, đây là cách không đúng vì các package dùng cho quá trình development khác với production, không dùng chung. Thường sẽ có base.txt cho các package chung và các môi trường khác nhau như local.txt, production.txt.

The post FastAPI: triển khai bằng Docker appeared first on Fullstack Station.

]]>
https://fullstackstation.com/fastapi-trien-khai-bang-docker/feed/ 1
Docker thực chiến: môi trường phát triển https://fullstackstation.com/docker-thuc-chien-moi-truong-phat-trien/ https://fullstackstation.com/docker-thuc-chien-moi-truong-phat-trien/#comments Fri, 10 May 2019 08:58:11 +0000 http://fullstackstation.com/?p=1540 Có lẽ với bạn bây giờ Docker không còn quá xa lạ (đọc Docker là gì nếu bạn chưa biết) , nhiều người đã sử dụng trong môi trường sản phẩm và trong môi trường phát triển. Mặc dù vậy, docker cũng không phải dễ dàng tiếp cận và sử dụng, nếu bạn vẫn chưa […]

The post Docker thực chiến: môi trường phát triển appeared first on Fullstack Station.

]]>
Có lẽ với bạn bây giờ Docker không còn quá xa lạ (đọc Docker là gì nếu bạn chưa biết) , nhiều người đã sử dụng trong môi trường sản phẩm và trong môi trường phát triển. Mặc dù vậy, docker cũng không phải dễ dàng tiếp cận và sử dụng, nếu bạn vẫn chưa sử dụng docker vì 1 lý do nào đó, bài viết này sẽ dành cho bạn: docker thực chiến thiết lập môi trường phát triển một cách dễ dàng.

Tại sao nên xài docker

Thú thật, mình cũng từng như bạn, không chịu rời bỏ cái môi trường lập trình đang chạy ngon lành trên máy của mình, cho đến một ngày…Đơn giản là đời làm lập trình có nhiều dự án, mỗi dự án yêu cầu môi trường, cấu hình khác nhau, rồi môi trường lập trình trên máy cũng khác. Ví dụ, trên máy dùng VSCode dùng phần rộng PHP đòi phải PHP 7, nhưng dự án A chỉ chạy trên 5.6, dự án B chỉ chạy trên PHP 7.2. Ngoài ra còn có nhiều tổ hợp công nghệ như kết hợp với Mysql hay Postgres, Elasticsearch…không phải mọi thứ đều cài lên máy chạy cùng lúc rất cực để quản lý và không hiệu quả.

Ngoài ra, một số thư viện cài đặt thỉnh thoảng có trục trặc với máy vì phải build lại, việc các thư viện chỉ chạy trên một vài version tương thích thường xuyên xảy ra. Điều này khiến cho bạn mất khá nhiều thời gian cho việc quản lý môi trường lập trình của mình, đây là điều nên tránh, hãy tập trung năng lượng cho công việc chính, còn môi trường phát triển hãy để docker lo.

Giới thiệu Lando

Dev With Lando

Lando là một nền tảng miễn phí, mã nguồn mở, đa nền tảng dựa trên docker dành cho lập trình viên, cải thiện môi trường làm việc bằng cách gom tổ hợp công nghệ bạn sử dụng thành 1 file cấu hình, thiết lập môi trường lập trình dễ dàng hơn bao giờ hết.

Homepage: https://devwithlando.io

Nói một cách ngắn gọn, nếu bạn biết WAMP hoặc MAMP, thì Lando là ông nội của 2 thằng này. Ví dụ lập trình

Các tổ hợp, ngôn ngữ đã được hỗ trợ

Ngôn ngữ

Các ngôn ngữ sau đã được hỗ trợ:

Tổ hợp

Các tổ hợp đã được cấu hình sẵn:

Các dịch vụ

Các dịch vụ sau cũng được hỗ trợ:

Tại sao nên dùng Lando

Nếu bạn tìm thấy một trong các công nghệ, dịch vụ, ngôn ngữ lập trình được hỗ trợ và liệt kê ở trên “quen thuộc” với công việc hàng ngày của mình, thì bạn đã có lý do sử dụng Lando.

Như ví dụ mình có nói ở trên, việc có nhiều dự án quả thật là rất phức tạp để quản lý môi trường lập trình. Mình đảm nhiệm các dự án trong công ty từ nhỏ đến lớn với các ngôn ngữ như Go, Python, Nodejs, PHP thì Go và Python là ít gặp trục trặc nhưng PHP thì nhiều, và nhiều nhất là Nodejs vì Nodejs ra phiên bản mới liên tục. Dự án cũ 2,3 năm trước thì xài công nghệ, phiên bản cũ tới lúc mình cập nhật máy và thư viện liên quan thì khi quay lại dự án cũ nó không chạy :((. Và mất thời gian chỉnh sửa môi trường làm việc như vậy vài lần, đến mức độ mình thấy sợ. Từ khi có Lando, khi muốn chạy dự án nào, chỉ cần: `lando start` là xong.

Các tính năng nổi bật của Lando:

  • Sao chép tương tự môi trường production cho máy bạn
  • Quy chuẩn hoá mọi trường lập trình của đội ngũ đa nền tảng OSX, Window, Linux
  • Tuỳ chỉnh hoặc mở rộng công cụ, cấu hình triển khai
  • Chạy CI test trên máy của bạn.
  • Sử dụng môi trường duy nhất cho tất cả các dự án
  • Tích hợp với nhà cung cấp dịch vụ hosting như Pantheon

Mặc dù bạn có thể nhận ra là Docker Compose cũng có tính năng tương tự, tuy nhiên có một vài sự khác biệt:

  • Lando là một lớp trừu tượng đã làm giảm bớt tính phức tạp khi cấu hình các container bằng cách sử dụng “công thức” (recipes) cho một số stack phổ biến.
  • Lando cung cấp nhiều phương thức giúp lập trình viên chạy những dòng lệnh phức tạp, các bước build, … và tự động hoá các dịch vụ mà không cần tinh chỉnh Dockerfiles
  • Lando quản lý một số tác vụ cài đặt phức tạp được yêu cầu để có một Docker Composer tốt như proxy, nice urls, cross-application netwroking.
  • Ngoài ra, bạn vẫn có thể tuỳ biến dễ dàng Docker Compose.

Nói 1 cách khác, Lando đã giúp đơn giản hoá Docker Compose cho một số tác vụ, stack phổ biến. Chỉ cần 1 câu lệnh, các dịch vụ đi kèm đều được khởi tạo, mất chưa đầy 2 phút là bạn có thể chạy được stack.

Bắt tay vào thực hành Lando

Mình không muốn nói phần này nhiều, chỉ cần sau khi bạn cài đặt Docker, Lando thì bạn chỉ mất 5 phút để tạo 1 dự án WordPress, Laravel, Drupal, Joomla hay LAMP, LEMP bất kỳ chỉ việc sử dụng công thức đã liệt kê ở trên.

5 phút đơn giản chỉ là tạo cái file .lando.yml, đây là file mẫu dùng cho WordPress (dùng với Bedrock/Sage sẽ được giới thiệu ở bài khác)

name: seikeidenron
recipe: wordpress
proxy:                
  nginx:              # Tuỳ chọn: nếu bạn bỏ qua cấu hình này thì Lando sẽ chạy ở seikeidenron.lndo.site
    - seikeidenron.localhost
  theme:              # Tuỳ chọn: ở đây mình phát triển thêm theme của wordpress thì sẽ cần tới node
    - localhost:3000
config:
  php: '7.2'
  via: nginx
  webroot: web
  database: mariadb
  xdebug: true

# Đoạn này cần để thiết lập node
services:
  theme:
    type: node
    services:
      ports:
        - 3000:3000
tooling:
  yarn:
    service: theme

Xong file trên thì chỉ cần lando start là mọi thứ chạy, quá nhanh quá nguy hiểm.

Fullstack Station Tips

Các công thức có sẵn đa phần đều có phần database riêng lẻ, tuy nhiên nếu các dự án của bạn đều sử dụng mysql chẳng hạn, thì hãy sử dụng database server của máy bạn, chứ không phải database server của docker. Như vậy thì việc sử dụng Lando sẽ trở nên nhanh chóng hơn, nhất là đối với các dự án đang giai đoạn lập trình. Ở phần kết nối db thì thay vì bạn dùng localhost thì hãy đổi thành host.docker.internal, đây chính là máy host, máy chính của bạn.

The post Docker thực chiến: môi trường phát triển appeared first on Fullstack Station.

]]>
https://fullstackstation.com/docker-thuc-chien-moi-truong-phat-trien/feed/ 1
Hướng dẫn cài đặt V8JS cho PHP trên Centos 7 https://fullstackstation.com/huong-dan-cai-dat-v8js-cho-php7-tren-centos/ https://fullstackstation.com/huong-dan-cai-dat-v8js-cho-php7-tren-centos/#respond Tue, 12 Jan 2016 02:06:48 +0000 https://www.businesscard.vn/blog/?p=14 Giới thiệu Từ khi Google giới thiệu V8 Engine, không ngoa khi nói rằng đó là nền tảng cho Javascript thăng hoa, vài dự án nổi tiếng phát triển dựa trên V8 là Google Chrome, Node Js, Mongo Db. Trong đó, với Google Chrome, giờ đã chiếm thị phần quá nửa trên thị phần trình duyệt, […]

The post Hướng dẫn cài đặt V8JS cho PHP trên Centos 7 appeared first on Fullstack Station.

]]>
Giới thiệu

Từ khi Google giới thiệu V8 Engine, không ngoa khi nói rằng đó là nền tảng cho Javascript thăng hoa, vài dự án nổi tiếng phát triển dựa trên V8 là Google Chrome, Node Js, Mongo Db. Trong đó, với Google Chrome, giờ đã chiếm thị phần quá nửa trên thị phần trình duyệt, cũng nhờ đó mà javascript cho trình duyệt cũng trở nên phát triển trong thời kỳ rực rỡ, và hơn hết là Node Js, nền tảng thực thi javascript dựa trên V8 chạy ở phía server rất mạnh mẽ không kém gì các ngôn ngữ PHP, Python, Ruby, .Net mà còn nhỉnh hơn trong các ứng dụng thời gian thực (realtime). Bài viết này sẽ hướng dẫn cài đặt V8JS trên Cent OS 7.

V8 Engine là gì?

Trang chủ V8 [Github]

Như đã giới thiệu cơ bản ở trên, V8 là một bộ máy (engine) được viết bằng C++ thực thi Javascript theo EcmaScript (đọc thêm bài ES2015 là gì), biên dịch Javascript ra mã máy (IA-32, x86-64, ARM, hay là MIPS ISAs …)

Do biên dịch Javascript ra mã máy, nên tốc độ của V8 Engine là rất nhanh, cũng như được nâng cấp kỹ thuật cache để gia tăng tốc độ cho Javascript.

Từ trước khi V8 Engine ra đời, Javascript chỉ thực hiện ở trên trình duyệt: chậm và thiếu nhiều tính năng. Node Js ra đời dựa trên V8 Engine và đã chiếm được rất nhiều tình cảm từ cộng đồng lập trình viên trên toàn thế giới. Ngay tại thời điểm bạn đọc bài viết này, Node Js được dùng bởi hầu hết lập trình viên Frontend thông qua Bower hoặc NPM cho cả Frontend, và phía server.

V8 Js là gì?

Trang chủ thư viện PHPV8/V8Js [Github]

Node Js thực thi Javascript cho ngôn ngữ phía server và rất mạnh mẽ. Tuy nhiên, tại thời điểm viết bài Node Js cũng chỉ mới có 7 năm tuổi đời, còn PHP có đến 20+ tuổi đời, số lượng lập trình viên PHP trên thế giới rất đông đảo. Vậy làm sao lập trình viên PHP tận dụng được sức mạnh của V8 trong sản phẩm của mình?

Tận dụng được sức mạnh của V8: thực thi Javascript trong PHP là lý do V8 Js ra đời. Bộ thư viện mở rộng V8Js giúp PHP có thể thực thi Javascript ngay trong chính ngôn ngữ PHP.

<?php
class Foo {
  var $bar = null;
}
$v8 = new V8Js();
$v8->foo = new Foo;
// This prints "no"
$v8->executeString('print( "bar" in PHP.foo ? "yes" : "no" );');
?>

Đoạn code ở trên cho thấy có thể sử dụng javascript ngay trong PHP. Đọc đến đây bạn có thể có bạn đặt câu hỏi: Chạy javascript trên Server làm gì?

Bạn có thể viết ứng dụng từ React Js phát triển cho client-side (Đọc thêm bài React Js là gì?), và sử dụng lại code đó cho server-side, được gọi từ PHP code. Bản thân cách sử dụng lại code này có thể đạt được bởi dùng Node Js, nhưng nếu bạn đã có website sử dụng PHP và muốn phát triển client-side bằng React Js thì V8Js sẽ giúp bạn đạt được điều này một cách dễ dàng.

Hướng dẫn cài đặt V8 Js

Chuẩn bị:

  • CentOS 7
  • Quyền sudo, hoặc tài khoản root.

Bước 1: chuẩn bị các thư viện cần thiết

yum -y update
# Install EPEL repo
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# Install build tools
yum -y install gcc-c++ pcre-devel zlib-devel make unzip 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Bước 2: cài đặt PHP 5 hoặc 7

Nếu bạn đã có PHP rồi có thể bỏ qua bước này.

PHP 7:

# Install PHP 7
yum -y install --enablerepo=webtatic php70w php70w-common php70w-fpm php70w-cli php70w-opcache php70w-pear php70w-devel php70w-intl php70w-mbstring php70w-mcrypt

PHP 5.6:

# Install PHP 5.6
yum -y install --enablerepo=webtatic php56w php56w-common php56w-fpm php56w-cli php56w-opcache php56w-pear php56w-devel php56w-intl php56w-mbstring php56w-mcrypt

Bước 3: Cài đặt GIT

[Quan trọng]: do GIT cài đặt sẵn, hoặc bạn cài từ lệnh YUM thì phiên bản này cũ không phù hợp với một số lệnh mới để cài đặt V8

# Install Git latest  
yum -y install curl-devel expat-devel gettext-devel openssl openssl-devel zlib-devel bzip2
yum -y install gcc perl-ExtUtils-MakeMaker

cd /usr/src && 
    git clone https://github.com/git/git
cd /usr/src/git && make prefix=/usr/local/git all && make prefix=/usr/local/git install
yum -y remove git

# Use new Git
PATH /usr/local/git/bin:$PATH

Bước 4: Cài đặt V8

# Install Depot Tools
cd /usr/src && git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
PATH /usr/src/depot_tools:$PATH

# Install v8
cd /usr/src && fetch v8
cd /usr/src/v8 && make native library=shared snapshot=off -j 4

cp -R /usr/src/v8/out/native/lib.target/lib* /lib64/
cp /usr/src/v8/out/native/obj.target/tools/gyp/libv8_libplatform.a /usr/lib64/
cp -R /usr/src/v8/include /usr/local

Bước 5: Cài đặt V8Js

PHP 7:

# Install v8js 
echo "/usr/lib64" | pecl install v8js-1.0.0

PHP 5.6:

# Install v8js 
echo "/usr/lib64" | pecl install v8js

Bạn có thể thấy đây là mục đích cuối cùng, cài V8Js, nhưng đó lại là bước dễ nhất! Nhưng để đạt được bước này, mình đã trải qua nghiên cứu, cài đặt thử nghiệm trên CentOs 6, 7 trong mấy ngày để tìm đủ các thư viện để hoàn thiện các bước từ 1->4.

Đến bước này thì bạn đã cài đặt V8Js thành công rồi đó.

Thêm dòng này vào php.ini

echo extension=v8js.so > /etc/php.d/v8js.ini

Bước 6: Kiểm tra

php -m | grep v8
#### Display ####
# v8js
# Check V8Js class
php -r 'var_dump(get_declared_classes());' | grep V8
#### Display ####
# string(4) "V8Js"
# string(13) "V8JsException"
# string(19) "V8JsScriptException"
# string(22) "V8JsTimeLimitException"
# string(24) "V8JsMemoryLimitException"
# string(8) "V8Object"
# string(10) "V8Function"
# Check method
php -r '$class = new ReflectionClass("V8Js"); var_dump($class->getMethods());'
#### Display ####
# array(14) {
# [0]=>
# object(ReflectionMethod)#2 (2) {
# ["name"]=>
# string(11) "__construct"
# ["class"]=>
# string(4) "V8Js"
# }
# [1]=>
# object(ReflectionMethod)#3 (2) {
# ["name"]=>
# string(7) "__sleep"
# ["class"]=>
# string(4) "V8Js"
# }
# Excute test v8js
php -r '$v8 = new V8Js(); var_dump($v8->executeString("1+2+3"));'
#### Display ####
# int(6)

Nếu bạn chạy các dòng trên có kết quả như trên thì bạn đã hoàn toàn cài đặt V8Js thành công rồi. Từ bây giờ bạn có thể sử dụng Javascript trong PHP một cách thoải mái rồi nhé.

Docker: V8Js/PHP7/Nginx trên CentOS 7

Dành cho mục đích test V8Js trên PHP là cái quái gì? Mình đã tạo ra 1 image và phát hành trên Docker Hub:

https://hub.docker.com/r/virusvn/docker-centos-v8js/

Chỉ cần pull về, thực hiện SSH vào trong container thì sẽ thực thi được các lệnh Javascript trong PHP. Nếu bạn chưa biết Docker là gì, thì Fullstack Station cũng đã viết 1 bài giới thiệu tại đây.

The post Hướng dẫn cài đặt V8JS cho PHP trên Centos 7 appeared first on Fullstack Station.

]]>
https://fullstackstation.com/huong-dan-cai-dat-v8js-cho-php7-tren-centos/feed/ 0
Docker là gì? https://fullstackstation.com/docker-la-gi/ https://fullstackstation.com/docker-la-gi/#comments Sat, 05 Dec 2015 03:00:28 +0000 https://www.businesscard.vn/blog/?p=3 Gần đây Docker đang được thảo luận và gây được nhiều chú ý trong cộng đồng công nghệ trên thế giới, với nhiều hứa hẹn trong tương lai. Các hãng công nghệ lớn như Google, Amazon, Microsoft, IBM … đã bắt đầu hỗ trợ Docker trên nền tảng của họ. Vậy Docker là gì, có […]

The post Docker là gì? appeared first on Fullstack Station.

]]>
Công nghệ docker là gì?
Công nghệ docker là gì?

Gần đây Docker đang được thảo luận và gây được nhiều chú ý trong cộng đồng công nghệ trên thế giới, với nhiều hứa hẹn trong tương lai. Các hãng công nghệ lớn như Google, Amazon, Microsoft, IBM … đã bắt đầu hỗ trợ Docker trên nền tảng của họ. Vậy Docker là gì, có gì thú vị ?

Bài viết này ghi lại ngắn những hiểu biết của người viết trong quá trình tìm hiểu về Docker, hi vọng sẽ giúp người đọc có một cái nhìn tổng quan về Docker. Cuối cùng sử dụng Docker để đóng gói và chạy một ứng dụng “Hello world !” Scala trên Play framework.

1. Docker là gì

  • Định nghĩa

Docker là một nền tảng mở dành cho các lập trình viên, quản trị hệ thống dùng để xây dựng, vận chuyển và chạy các ứng dụng phân tán. Ban đầu viết bằng Python, hiện tại đã chuyển sang Go-lang.

  • Các thành phần chính

– Docker Engine : là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng
– Docker Hub : là dịch vụ cloud để chia sẻ ứng dụng và tự động hóa chuỗi các công việc liên tục, có thể thao tác pull/push với các images

  • Một số khái niệm

Docker images : là một “read-only template”. Chẳng hạn, một image chứa hệ điều hành Ubuntu đã cài đặt sẵn Apache và ứng dụng web

Docker registries : Là kho chứa images. Người dùng có thể tạo ra các images của mình và tải lên đây hoặc tải về các images được chia sẻ

Docker container : hoạt động giống như một thư mục (directory), chứa tất cả những thứ cần thiết để một ứng dụng có thể chạy được. Mỗi một docker container được tạo ra từ một docker image. Các thao tác với một container : chạy, bật, dừng, di chuyển, và xóa

Dockerfile : là một file chứa tập hợp các lệnh để Docker có thể đọc và thực hiện để đóng gói một image theo yêu cầu người dùng

Orchestration : là các công cụ, dịch vụ dùng để điều phối và quản lý nhiều containers sao cho chúng làm việc hiệu quả nhất

2. So sánh Docker với Virtual machine

Smiley face
Điểm khác biệt chính là các containers sử dụng chung kernel với Host OS nên các thao tác bật, tắt rất nhẹ nhàng, nhanh chóng.

. Ưu điểm : nhanh, nhẹ, có thể chia sẻ dễ dàng qua DockerHub
. Nhược điểm : mới, cập nhật thay đổi thường xuyên

3. Sử dụng Docker để đúng gói và chạy ứng dụng “Hello World” dùng Scala trên Play framework

  • Cài đặt Docker daemon

Việc cài đặt khá đơn giản, tùy theo OS sẽ có cách cài đặt khác nhau, tham khảo thêm tại đây

Cài trên Ubuntu 14.04 :

sudo apt-get update
sudo apt-get install docker.io
  • Viết Dockerfile

Viết Dockerfile để đóng gói 1 image trong đó đã cài đặt Play framework, ứng dụng “Hello world” Scala và môi trường.

. Đóng gói image từ Dockerfile ở trên, chuyển tới thư mục chứa Dockerfile file và chạy lệnh

. Bật Docker Container

Truy cập http://localhost:9000, điền thông tin và submit form :

Smiley face
. Push image lên DockerHub

. Từ một EC2 chạy ubuntu, chạy lệnh sau để Docker pull longlx/play-hello image từ DockerHub và bật conatianer lên

sudo docker run --rm -it -p 9000:9000 longlx/play-hello

Truy cập http://ec2-public-ip:9000, điền thông tin và submit form :

Smiley face
4. “Use Case” cho môi trường phát triển

Có thể sử dụng docker trong môi trường phát triển phần mềm như mô hình dưới :

. Bước 1 : Lập trình viên sử dụng Docker trên máy local của mình, phát triển và đóng gói thành docker image, đẩy lên DockerHub

. Bước 2 : SQA có thể tải về image trên môi trường test, bật container và thực hiện việc test các tính năng

. Bước 3 : Nếu test thành công, có thể pull image và bật container trên môi trường production. Nếu việc test không thành công, SQA thông báo lại để lập trình viên kiểm tra lại (quay lại Bước 1)

Nguồn: http://labs.septeni-technology.jp/technote/gioi-thieu-docker/

The post Docker là gì? appeared first on Fullstack Station.

]]>
https://fullstackstation.com/docker-la-gi/feed/ 2