I. Docker compose là gì ?

Docker compose là phép tắc dùng để làm khái niệm cùng run multi-container mang lại Docker application. Với compose chúng ta áp dụng tệp tin YAML nhằm config những services đến application của người tiêu dùng. Sau đó dùng comm& nhằm create và run từ bỏ mọi config kia.Sử dụng cũng rất đơn giản chỉ với tía bước:

Knhị báo app’s environment vào Dockertệp tin.Khai báo những services quan trọng nhằm chạy application vào tệp tin docker-compose.yml.Run docker-compose up để start với run ứng dụng.

Bạn đang xem: Những điều phải biết về docker compose, cách sử dụng và các lưu ý

II. Đặc điểm

*

Không y như Dockertệp tin (build các image). Docker compose dùng làm build với run những container. Các làm việc của docker-compose tương tự như như lệnh: docker run.

Docker compose được cho phép sản xuất nhiều service(container) kiểu như nhau bởi lệnh:

$ docker-compose scale =

III. Demo

Thiết lập web :

npm

npm init react-ứng dụng hoặc yarn

yarn create react-app trong thử nghiệm là web React js

Tgiỏi thay đổi file App.js

import React, useState from "react";import "./App.css";function status(response) if (response.status >= 200 && response.status return fetch( "http://localhost:8080/api/v1/foods?id=" + foodId, method: "GET", headers: "Content-Type": "application/json; charset=UTF-8" ) .then(status) .then(json) .then(res => (new Promise((resolve sầu, reject) => resolve(res.data)))) .catch(err => alert("err: ", err); return undefined; );function App() const = useState(0); const = useState(""); return (

App kiếm tìm món nạp năng lượng theo id


setFoodId(e.target.value)/> getFoodDetail(foodId).then(data => setDataFood(data)) > Tìm tìm Kết quả: dataFood


);}export default App;

App.css

.App text-align: center;.App-biểu tượng logo animation: App-logo-spin infinite 20s linear; height: 40vmin; pointer-events: none;.App-header background-color: #282c34; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: calc(10px + 2vmin); color: white;.input padding: 10px; width: 200px; border: 0; box-shadow: 0px 2px 30px 0px rgba(255,255,15,1); margin-right: 10px;.btnSearch padding: 10px 50px; color: white; background: blueviolet; border: 0; border-radius: 20px;.btnSearch:hover background: #c837de;.App-links color: #61dafb;
keyframes App-logo-spin from transform: rotate(0deg); khổng lồ transform: rotate(360deg); Phần server:

main.go

package mainimport ("net/http""strconv""github.com/gin-gonic/gin")func Options(c *gin.Context) if c.Request.Method != "OPTIONS" c.Next() else c.Header("Access-Control-Allow-Origin", "*")c.Header("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS")c.Header("Access-Control-Allow-Headers", "authorization, origin, content-type, accept")c.Header("Allow", "HEAD, GET, POST, PUT, PATCH, DELETE, OPTIONS")c.Header("Content-Type", "application/json")c.AbortWithStatus(200)func Secure(c *gin.Context) c.Header("Access-Control-Allow-Origin", "*")type Foods mapstringvar foods = Foods1: "Gà kho xả ớt", 2: "Cá lóc kho", 3: "Thịt xào măng", 4: "Bún chả cá"func getFoodById(c *gin.Context) id, err := strconv.Atoi(c.Query("id"))if err != nil c.JSON(http.StatusOK, gin.H"error": err.Error())if len(foods) > 0 c.JSON(http.StatusOK, gin.H"data": foods) else c.JSON(http.StatusOK, gin.H"data": "Không tìm thấy")func main() r := gin.Default()r.Use(Options)r.Use(Secure)v1 := r.Group("/api/v1")v1.GET("/foods", getFoodById)r.Run(":8080")Config trong Dockertệp tin. Nếu chúng ta chưa biết về các lệnh để config Dockerfile. Đừng băn khoăn lo lắng hãy xem lại phần 1: trên đây

FROM node:carbon-alpine AS node_builderWORKDIR /app/webreactjsCOPY /webreactjs/package.json .RUN npm installCOPY /webreactjs .LABEL name="webreactjs" version="1.0"EXPOSE 3000CMD <"npm", "start">FROM golang:1.11 AS go_builderĐịa Chỉ . /appWORKDIR /appRUN go mod downloadRUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-w" -a -o /main .LABEL name="server" version="1.0"FROM alpine:latestRUN app android --no-cabịt add ca-certificatesCOPY --from=go_builder /main ./RUN chmod +x ./mainEXPOSE 8080CMD ./mainTiến hành build Dockerfile

*

Config services cần start cùng run trong tệp tin docker-compose.yml

version: "2.1"services: webreactjs: image: af1205224676 build: . ports: - 3000:3000 restart: always servergo: image: cef5deda0834 build: . ports: - 8080:8080 restart: alwaysversion: chỉ ra phiên phiên bản docker-compose vẫn sử dụng.services: thiết lập cấu hình những services(containers) ước ao thiết đặt với chạy.image: chỉ ra rằng image được áp dụng trong những khi tạo ra container.build: dùng để làm tạo container.

Xem thêm: Calligraphy Là Gì ? Tự Học Vẽ Calligraphy Tại Nhà Không Phải Ai Cũng Biết

ports: cấu hình thiết lập ports chạy tại trang bị host cùng vào container.restart: auto khởi chạy lúc container bị tắt.Hình như còn có một số trong những lệnh config khác:

environment: thiết lập cấu hình trở nên môi trường thiên nhiên ( hay thực hiện trong khi config những thông số của db).

depends_on: chỉ ra sự dựa vào. Tức là services nào buộc phải được thiết đặt với chạy trước thì service được config trên đó bắt đầu được chạy.

volumes: dùng làm mount nhì thư mục bên trên host và container cùng nhau.

Run comm& nlỗi bên dưới:

$ docker-compose upSau khi run xong xuôi chúng ta thấy docker-compose đã start và run nhị service mà họ đang config vào tệp tin docker-compose.yml ở trên

*

Giờ là lúc bọn họ chiêm ngưỡng và ngắm nhìn kết quả đó thôi như thế nào

*

*

*

Mẹo nhỏ : Dành cho mình làm sao cần sử dụng Visual Studio Code giống mình đó là bạn có thể tạo thành nkhô giòn các config cho Dockertệp tin cùng docker-compose.yml chỉ bằng một vài ba thao tác làm việc bé dại. Trên Visual Studio Code các bạn download thêm extension Docker

*

Sau Lúc cài đặt hoàn thành nhấn F1 => gõ docker: add => chọn temp bao gồm sẵn + config port lúc này Visual Studio Code đang tự động hóa generate các fileDockertệp tin, docker-compose.yml, docker-compose.debug.yml, và.dockerignore cho bạn.

Hình như nó còn suggest lệnh cho chúng ta tương tự như là chú ý trong khi họ tự config những file của docker vô cùng một thể.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *