您好,登錄后才能下訂單哦!
這篇文章主要講解了“Compose怎么構建dubbo-admin服務”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Compose怎么構建dubbo-admin服務”吧!
Compose 項目是 Docker 官方的一個開源項目,負責實現對 Docker 容器集群的快速編排。
Compose 定位是”定義和運行多個 Docker 容器的應用“,其前身是開源項目 Fig。
Compose 允許用戶通過一個單獨的 docker-compose.yml 模板文件來定義一組相關聯的應用容器為一個項目(project)。
Compose 下兩個重要的概念:
服務(Service):一個應用的容器,實際上可以包含若干運行相同鏡像的容器實例。
項目(project):由一組關聯的應用容器組成的一個完整業務單元。
Compose 的默認管理對象是項目,通過子命令對項目中的一組容器進行便攜地生命周期管理。
Compose 項目由 Python 編寫,實現上調用 Docker 服務提供的 API 來對容器進行管理。
Compose 可以通過 Python 的包管理工具 pip 進行安裝,也可以直接下載編譯好的二進制文件使用,甚至能夠直接在 Docker 容器中運行。
Docker for Mac、Docker for Windows 自帶 docker-compose 二進制文件,安裝 Docker 之后可以直接使用。
docker-compose --version
Linux 系統需要單獨使用二進制或者 pip 方式進行安裝。
二進制包
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
PIP 安裝
pip install -U docker-compose
從 github 上拉取 master 分支源碼
git clone -b master https://github.com/apache/dubbo-admin.git
修改 admin 中的 application 配置,把 zookeeper 地址改成 zookeeper://zookeeper:2181
使用 maven 進行編譯打包
mvn clean package -Dmaven.test.skip=true
在 dubbo-admin 目錄下編寫 Dockerfile 文件,內容為:
# FROM,表示使用 JDK8 環境為基礎鏡像,如果鏡像不是本地的會從 Docker Hub 進行下載 FROM openjdk:8-jdk-alpine # 作者 MAINTAINER zp<zp@test.com> VOLUME /tmp # ADD,拷貝文件并且重命名 ADD ./target/dubbo-admin-0.0.1-SNAPSHOT.jar app.jar # ENTRYPOINT,為了縮短 Tomcat 啟動時間,添加 java.secutiry.egd 的系統屬性指向 /dev/urandom 作為 ENTRYPOINT ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
使用 docker build -t dubbo-admin:1.0 .
命令進行構建。
在項目根目錄下編寫 docker-compose.yml 文件,這個是 Compose 使用的主模板文件。
version: '3.4' services: zk_server: image: zookeeper:3.4 ports: - 2181:2181 dubbo-admin: image: dubbo-admin:1.0 links: - zk_server:zookeeper ports: - 7001:7001
在 docker-compose.yml 文件所在目錄執行:
docker-compose up
瀏覽器訪問 http://ip:7001 進行驗證,用戶名密碼為:root/root,guest/guest
執行 docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看具體某個命令的使用格式。
docker-compose 命令的基本的使用格式是:
docker-compose [-f=<arg>...] [option] [COMMAND] [ARGS...]
-f,--file FILE 指定模板文件,默認為 docker-compose.yml,可以多次指定。
-p,--project-name NAME 指定項目名稱,默認將使用所在目錄名稱作為項目名。
--x-networking 使用 Docker 的可插拔網絡后端特性。
--x-networking-driver DRIVER 指定網絡后端的驅動,默認為 bridge。
--verbose 輸出更多調試信息。
-v,--version 打印版本并退出。
命令 | 說明 |
---|---|
build | 格式為 docker-compose build [options] [SERVICE...]。<br/>構建(重新構建)項目中的服務容器。<br/>可以隨時在項目目錄下運行 docker-compose build 來重新構建服務。<br/>選項包括:<br/> --force-rm 刪除構建過程中的臨時容器。<br/> --no-cache 構建鏡像過程中不使用 cache(這將加長構建過程)。<br/> --pull 始終嘗試通過 pull 來獲取更新版本的鏡像。 |
version | 格式為 docker-compose version。<br/>打印版本信息。 |
config | 驗證 Compose 格式是否正確,若正確則顯示配置,若格式錯誤顯示錯誤原因。 |
exec | 進入指定的容器。 |
images | 列出 Compose 文件中包含的鏡像。 |
logs | 格式為 docker-compose logs [options] [SERVICE...]。<br/>查看服務容器的輸出。默認情況下,docker-compose 將對不同的服務輸出使用不同的顏色來區分。可以通過 --no-color 來關閉顏色。 |
down | 停止 up 命令所啟動的容器,并移除網絡。 |
help | 獲得一個命令的幫助。 |
kill | 通過發送 SIGKILL 信號來強制停止服務容器。 |
pause | 格式為 docker-compose pause [SERVICE...]。<br/>暫停一個服務容器。 |
port | 格式為 docker-compose port [options] SERVICE PRIVATE_PORT。<br/>打印某個容器端口所映射的公共端口。<br/>選項:<br/> --protocol=proto 指定端口協議,tcp(默認值)或者 udp。<br/> --index=index 如果同一服務存在多個容器,指定命令對象容器的序號(默認為1)。 |
ps | 格式為 docker-compose ps [options] [SERVICE...]。<br/>列出項目中目前的所有容器。<br/>選項:<br/> -q 只打印容器的 ID 信息。 |
push | 推送服務以來的鏡像到 Docker 鏡像倉庫。 |
pull | 格式為 docker-compose pull [options] [SERVICE...]。<br/>拉取服務依賴的鏡像。<br/>選項:<br/> --ignore-pull-failures 忽略拉取鏡像過程中的錯誤。 |
restart | 格式為 docker-compose restart [options] [SERVICE...]。<br/>重啟項目中的服務。<br/>選項:<br/> -t,--timeout TIMEOUT 指定重啟前停止容器的超時(默認為 10 秒)。 |
rm | 格式為 docker-compose rm [options] [SERVICE...]。<br/>刪除所有(停止狀態的)服務容器。推薦先執行 docker-compose stop 命令來停止容器。<br/>選項:<br/> -f,--force 強制直接刪除,包括非停止狀態的容器。一般盡量不要使用該選項。<br/> -v 刪除容器所掛載的數據卷。 |
run | 格式為 docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]。<br/>在指定服務上執行一個命令。例如:<br/>docker-compose run ubuntu ping docker.com |
scale | 格式為 docker-compose scale [options] [SERVICE=NUM...]。<br/>設置指定服務運行的容器個數。例如:<br/>docker-compose scale web=3 db=2 <br/>將啟動 3 個容器運行 web 服務,2 個容器運行 db 服務。 |
start | 格式為 docker-compose start [SERVICE...]。<br/>啟動已經存在的服務容器。 |
stop | 停止已經存在的服務容器。 |
top | 查看各個服務容器內運行的進程。 |
unpause | 格式為 docker-compose unpause [SERVICE...]。<br/>恢復處于暫停狀態中的服務。 |
up | 該命令十分強大,它將嘗試自動完成包括構建鏡像,(重新)創建服務,啟動服務,并關聯服務相關容器的一系列操作。鏈接的服務都將會被自動啟動,除非已經處于運行狀態。<br/>選項:<br/> -d 在后臺運行服務容器。<br/> --no-color 不適用顏色來區分不同的服務的控制臺輸出。<br/> --no-deps 不啟動服務所鏈接的容器。<br/> --force-recreate 強制重新創建容器,不能與 --no-recreate 同時使用。<br/> --no-recreate 如果容器已經存在了,則不重新創建,不能與 --force-recreate 同時使用。<br/> --no-build 不自動構建確實的服務鏡像。<br/> -t,--timeout TIMEOUT 停止容器時候的超時(默認為10秒)。 |
默認的模板文件名稱為 docker-compose.yml,格式為 YAML 格式。
每個服務必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)等來自動構建生成鏡像。
如果使用 build 指令,在 Dockerfile 中設置的選項(例如:CMD、EXPOST、VOLUME、ENV 等)將會自動被獲取,無需在 docker-compose.yml 中再次設置。
指定 Dockerfile 所在文件夾的路徑(可以是絕對路徑,或者相對 docker-compose.yml 文件的路徑)。
Compose 將會利用它自動構建這個鏡像,然后使用這個鏡像。
使用 context 指令指定 Dockerfile 所在文件夾的路徑。
使用 dockerfile 指令指定 Dockerfile 文件名。
使用 arg 指令指定構建鏡像時的變量。
version: '3' services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1
覆蓋容器啟動后默認執行的命令。
command: echo "hello world"
指定容器名稱。默認將會使用 項目名稱_服務名稱_序號 這樣的格式。
container_name: docker-web-container
僅用于 swarm mode,詳細內容后面 swarm mode 介紹。
僅用于 swarm mode,詳細內容后面 swarm mode 介紹。
指定設備映射關系。
devices: - "/dev/ttyUSB1:/dev/ttyUSB0"
解決容器的依賴、啟動先后的問題。
自定義 DNS 服務器。可以是一個值,也可以是一個列表。
dns: 8.8.8.8 dns: - 8.8.8.8 - 114.114.114.114
設置環境變量。可以使用數據或字典兩種格式。
只給定名稱的變量會自動獲取運行 Compose 主機上對應的變量值,可以用來防止泄露不必要的數據。
environment: RACK_ENV: development SESSION_SECRET: environment: - RACK_ENV=development - SESSION_SECRET
暴露端口,但不映射到宿主機,只被連接的服務訪問。
僅可以指定內部端口為參數。
expose: - "3000" - "8000"
類似 Docker 中的 --add-host 參數,指定額外的 host 名稱映射信息。
會在啟動后的服務容器中 /etc/hosts 文件中添加一條條目。8.8.8.8 googledns。
extra_hosts: - "googledns:8.8.8.8"
通過命令檢查容器是否健康運行。
healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s retries: 3
指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試去拉這個鏡像。
image: test-web:latest
為容器添加 Docker 元數據(metadata)信息。例如可以為容器添加輔助說明信息。
labels: com.zp.department: "devops department" com.zp.release: "v1.0"
連接到其他容器。注意:不推薦使用此指令。
或者使用 docker network,建立網絡,而 docker run --network 來連接特定網絡。
或者使用 version: '2' 和更高版本的 docker-compose.yml 直接定義自定義網絡并使用。
設置網絡模式。使用和 docker run 的 --network 參數一樣的值。
network_mode: "bridge" network_mode: "host" network_mode: "none"
配置容器連接的網絡。
version: '3' services: some-service: networks: - some-network networks: some-network:
暴露端口信息。使用宿主機端口:容器端口(HOST:CONTAINER)格式,或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。
ports: - "3000" - "8000:8000"
數據卷所掛載路徑設置,可以設置宿主機路徑,同時支持相對路徑。
volumes: - /var/lib/mysql - cache/:/tmp/cache - ~/configs:/etc/configs/:ro
指定容器的 ulimits 限制值。
例如:指定最大線程數為 65535,指定文件句柄數為 20000(軟限制,應用可以隨時修改,不能超過硬限制)和 40000(系統硬限制,只能 root 用戶提高)。
ulimits: nproc: 65535 nofile: soft: 20000 hard: 40000
此外,還包括 domainname、entrypoint、hostname、ipc、mac_address、privileged、read_only、shm_size、restart、stdin_open、tty、user、working_dir 等指令,基本跟 docker run 中對應參數的功能一致。
指定服務容器啟動后執行的入口文件
entrypoint: /code/entrypoint.sh
指定容器中運行應用的用戶名
user: nginx
指定容器中工作目錄
working_dir: /code
指定容器中搜索域名、主機名、mac 地址等。
domainname: your_website.com hostname: test mac_address: 08-00-27-00-0C-0A
允許容器中運行一些特權命令
privileged: true
指定容器退出后的重啟策略為始終重啟。在生產環境中推薦配置為 always 或者 unless-stopped。
restart: always
以只讀模式掛載容器的 root 文件系統,意味著不能對容器內容進行修改。
read_only: true
打開標準輸入,可以接受外部輸入。
stdin_open: true
模擬一個偽終端。
tty: true
Compose 模板文件支持動態讀取主機的系統環境變量和當前目錄下的 .env 文件中的變量。
例如,下面的 Compose 文件將從運行它的環境變量中讀取變量 ${MONGO_VERSION} 的值,并寫入執行的指令中。
version: '3' services: db: image: "mongo:${MONGO_VERSION}"
如果執行 MONGO_VERSION=3.2 docker-compose up
則會啟動一個 mongo:3.2 鏡像的容器。
若當前目錄存在 .env 文件,執行 docker-compose
命令時將從該文件中讀取變量。
感謝各位的閱讀,以上就是“Compose怎么構建dubbo-admin服務”的內容了,經過本文的學習后,相信大家對Compose怎么構建dubbo-admin服務這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。