compose安裝java(Composer安裝)

本文目錄一覽:

[Docker] docker-compose使用教程

[Docker] 入門教程

我們從 logo 上可以看出來, 說白了, 這個東西就是一個管理容器的工(zhang)具(yu), 我們可以方便的使用它來管理我們的 docker 容器, 可以極大程度的簡化命令行的複雜操作.

如果你是 Mac 或 Windows 用戶使用桌面版本的 Docker 應用默認就會替你安裝 docker-compose (下文中用dc代替), 如果是 centos 的話可以使用命令 yum -y install docker-compose 太簡單了不做過多說明.

查看版本,能顯示出來證明安裝成功了

接下來我們有需求了, 運行一個 service-a 掛載到 /usr/local , 映射端口為 8082 並添加 servicehost 域名映射內網 ip ,很多人可以想到那應該是一條冗長 docker 命令

這麼一大坨,看起來十分不方便,那麼我們就是用 docker-compose 來優化一下

首先創建一個名為 docker-compose.yml 的文件

之後隨便是用一個文本編輯器打開,寫入下面內容

這樣看起來是不是思路清晰多了呢,我們接下來運行一下

-d 後台運行,否則運行log就會出現在你的屏幕上。。。

然後查看一下運行狀態

我們可以看到服務已經運行起來了,我們試着訪問一下

成功,這一部分告一段落。

有的人會問,多個服務怎麼運行呢?很簡單,我們這裡就來做一下。

下面我要做的是開啟三個服務 service-a , service-b , service-eureka ,分別是一個註冊中心和兩個服務。

我們來完善一下 docker-compose.yml

我們來運行一下

註冊中心

訪問service-a

訪問service-b

到這裡我們已經可以運行起來多個服務了!!!!下課 – –

我們可以看到 docker-compose 會自動識別容器的開啟狀態,替我們開啟需要開啟的那一個

1.可能很多人對我的 echo 192.168.1.126 servicehost /etc/hosts 不是很理解

這裡說一下,這句命令的意思是,把 servicehost 域名加入到 hosts 文件,目的是為了能讓我的 eureka 發現我的服務,而不是把地址寫死在配置文件中,這句命令對應的服務配置為

Docker-compose編排微服務順序啟動

docker-compose可以方便組合多個 docker 容器服務, 但是, 當容器服務之間存在依賴關係時, docker-compose 並不能保證服務的啟動順序。docker-compose 中的 depends_on 配置是容器的啟動順序, 並不是容器中服務的啟動順序。本章將詳細敘述如何解決 docker-compose 順序啟動微服務的問題。

1.用restart:always機制

docker-compose.yml

2. 用shell腳本阻止當前服務啟動,直到所需依賴的服務全部啟動之後再啟動當前服務。

部署的微服務如下圖所示

(1) shell腳本 :entrypoint.sh ( 鏡像中必須安裝 netcat要麼通過maven配置要麼在dockefile安裝netcat )

這個腳本有2 個參數:

-d: 需要等待的服務和端口,例如: simonEureka:8080

-c: 等待的服務和端口啟動之後, 自己的啟動命令,例如: java -jar eureka.jar

(2)編寫docker-compose.yml

(3) 編寫每個jar包的Dockerfile文件

Dockerfile-eureka:

Dockerfile-config(其他的類似):

netcat放在同級目錄下

(4) 啟動服務

$ docker-compose up

其他程序都在等待eureka啟動這樣就實現了順序啟動的功能

注意問題:

1. Shell腳本權限問題(不能執行shell腳本):

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused “exec: \”docker-entrypoint.sh\”: executable file not found in $PATH”: unknown.

解決方法(添加權限)

chmod +x docker-entrypoint.sh

2. Shell腳本 報錯”start.sh  /bin/bash^M: 壞的解釋器:沒有那個文件或目錄」,因為 .sh文件是從windows拷貝過來的,所以多了\r

解決辦法

 sed -i ‘s/\r$//’ start.sh    

3. 出現網關不能no host to root

先關閉防火牆看是否能解決

4. 關閉防火牆後會出現NO chain需要重啟docker

如何在Java 8中使用compose和andThen組合函數

什麼是函數組合?

首先需要創建一些小的可重用函數,然後將這些小函數組合為新函數。

現在,我們怎麼利用 compose 和 andThen 方法來完成函數的組合?

首先,定義兩個簡單的函數—— times2 和 squared。

FunctionInteger, Integer times2 = e – e * 2; FunctionInteger, Integer squared = e – e * e;

接下來,使用 compose 和 andThen 將它們連起來。

times2.compose(squared).apply(4); // Returns 32 times2.andThen(squared).apply(4); // Returns 64

如你所見,compose 和 andThen 的不同之處是函數執行的順序不同。compose 函數先執行參數,然後執行調用者,而 andThen 先執行調用者,然後再執行參數。

compose環境變量怎麼配置

安裝 – Windows

使用安裝程序

這是將 Composer 安裝在你機器上的最簡單的方法。

下載並且運行 Composer-Setup.exe,它將安裝最新版本的 Composer ,並設置好系統的環境變量,因此你可以在任何目錄下直接使用 composer 命令。

選擇php.exe 如E:\xampp\php\php.exe

cmd 輸入

composer -V

顯示composer的版本號

為什麼除了Flutter之外,我們還需要另一個跨平台開發框架?

不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基礎上發佈了 Compose Multiplatform Alpha 版本,旨在將 Compose 擴展到桌面和 Web 端。

Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 組成,通過 Kotlin Multiplatform 支持許多不同的平台。其中,Compose Desktop 採用 Google 的 Skia 圖形庫,來實現在 Windows、macOS 和 Linux 上的 UI 繪製,藉此在所有支持的操作系統中提供統一的體驗,類似於 Flutter 的做法。

根據 Kotlin 團隊的說法,相比起 Electron 框架,Compose Multiplatform 在內存消耗、安裝大小和 UI 渲染性能等方面將有更明顯的優勢。隨着 Alpha 版本的發佈,Compose Multiplatform 還收穫了新的 Android Studio 插件,包括對在 IDE 中顯示組件預覽的支持以及許多附加功能。

我們希望通過本文幫助大家進一步了解 Compose 的跨平台能力,以及 JetBrains 將 Compose 從 Android 擴展到這些其他平台背後的主要驅動力是什麼。

基於 Jetpack Compose 1.0

由谷歌打造的 Jetpack Compose 是一款用於在 Android 應用程序之內構建用戶界面的官方框架,上周剛剛發佈 1.0 版本。與此同時,Android Studio 代號「極狐」的首個穩定版 2020.3.1 也正式亮相。

儘管才剛迎來 1.0,但谷歌表示「目前 Play Store 中已經有超過 2000 款應用程序在使用 Compose——更重要的是,就連 Play Store 這款應用本身也在使用 Compose。」谷歌方面還表示,「我們一直在與一些頂級應用的開發人員進行合作,他們的反饋和支持幫助我們使 1.0 版本更加強大。」

Jetpack Compose for Android 迎來 1.0 版本

Compose 基於 Kotlin 開發,而 Kotlin 與 Android Studio(即官方指定的 Android IDE)均來自開發工具廠商 JetBrains。雖然 Jetpack Compose 專為 Android 打造(與谷歌的 Flutter 框架不同), 但 JetBrains 公司堅信 Compose 完全能夠獲得跨平台能力 。

Compose for Desktop: 這只是開始

Compose Multiplatform 可以說是該框架面向 MacOS、Linux、Windows 以及 Web 開設的一個端口,目前剛剛發佈 1.0 Alpha 版本。雖然尚處於早期開發階段,但 JetBrains 表示,其已經「為開發人員帶來能夠基本安全使用的穩定 API」。

TheRegister 就此事詢問了 JetBrains 公司 Compose 項目負責人 Nikolay Igotti,希望了解為什麼該公司在擁有了已經廣泛應用於 IntelliJ IDEA IDE 及多種豐富變體的桌面應用程序跨平台 Java 框架之外,還要費力開發 Compose for Desktop。Igotti 的回答是,「舊有 Java 框架基本上就是修改版的 Swing。Swing 屬於默認 JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 則完全是另一碼事,當然我們也在設計中考慮到了互操作性需求……Swing 這套框架太陳舊了,最早出現在上世紀九十年代末。多年來人們對於 UI 的設計思路已經天翻地覆,Swing 顯然滿足不了要求了。」

JetBrains IDE 中的 Compose for Desktop 項目

Compose 與 Swing 有一個比較大的共同點:與其他使用本機控件的跨平台框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微軟的 Xamarin 有所不同,它們選擇自主繪製控件。Compose 使用的 Skia 開源圖形庫,也在谷歌 Chrome、Flutter 及其他眾多框架當中得到廣泛應用。那這是否意味着 Compose 應用程序將沒有自己的原生外觀?對此,Igotti 的回應是,「這取決於開發人員的選擇,取決於他們如何為應用程序設置主題。在這方面,Compose 的情況與 Flutter 等其他框架沒什麼區別。」

那 Compose for Desktop 應用程序是否依賴於 JVM(Java Virtual Machine)運行?Igotti 表示,「我們也知道,JVM 應用程序的發佈情況可能比較棘手。因此我們提供自己的 Gradle 插件,其使用 jpackage 與 Jlink 以 JVM 應用程序為基礎製作原生應用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可實現,大家用不着擔心 JVM。」

也就是說,開發成果將會是一款被精心包裹起來的 JVM 應用程序。JetBrains 還有一款用於解決這個問題的 Kotlin/Native 編譯器,「預計將在未來發佈,或者專門用於桌面開發。」

對應用程序的另一種思考方式

那 Web 應用程序方面呢?Igotti 回應稱,「我們使用 Kotlin/JS 編譯器。」Compose 的 Web 版本不如桌面版先進,說明文檔中也警告稱「API 尚未最終確定,預計會發生重大變化。」此外,雖然 Web 版本確實使用 Compose 模型,但 API 卻完全不同,而且會使用 HTML 與 CSS。所以,Web 版與 Compose for Desktop 之間能夠共享的代碼應該比較少。

據 Igotti 介紹,「Compose 代表着一種不同的應用程序思考方式。狀態即 UI 的真實來源,而 UI 本身是無狀態的,其表達永遠由狀態計算得出。在這方面,Compose for Web 採用一組相同的原語,完全相同的狀態管理思路。但是對於具體的小部件集合與排列方式,Web 版與桌面版之間確實無法互通。」

說到這裡,為什麼要把 Compose for Android 擴展到多種其他平台之上?「Compose 的目標受眾主要分為三類。首先是使用 Kotlin 與 Compose 的 Android 開發人員,他們希望把自己的開發成果交付至其他平台;其二是純 Kotlin 開發人員,他們希望以『一次編寫、隨處運行』的方式開發新的應用程序;第三則是那些不太熟悉 Kotlin 或者 Compose,但又希望開發出精美 UI 的用戶,我們希望能為他們提供實現目標的工具。」

Igotti 並沒有給出具體的發佈日期,但表示自己希望 Beta 版能在今年秋天發佈,「我們也希望能在今年之內推出 1.0 版本。」項目本身是完全開源的,「二十一世紀了,框架在大多數人們心目中就不應該收費。我們只是想開發一款長期缺失的軟件」,補足 JetBrains 當前商業模式中的工具鏈。

那麼,JetBrains 會在自己的其他工具中使用 Compose 嗎?事實上,他們的 JetBrains Toolbox(用於管理已安裝的 IDE)已經在使用 Compose,但 Igotti 表示短時間內 Compose 還無法取代 IntelliJ IDEA 等現有框架。「編輯器是其中最複雜也最重要的組件,經歷了 20 年的發展演進,我們幾乎不可能在中途進行重寫了。無論是 JetBrains 還是我個人,都不打算強迫每個人都轉而使用 Compose。我們的目標是為原有框架選項滿足不了的用戶提供新的解決方案。」

寫在最後

那麼,為什麼除了 Flutter 之外,我們還需要另一個跨平台框架?雖然谷歌的 Flutter 最開始主要面向移動設備,但現在也開始向桌面及 iOS 進軍,甚至比 Compose 還搶先了一步。不過,根據 StackOverflow 的最新調查, Flutter 使用的語言為 Dart;儘管 Dart 語言的人氣正在增長(正是受到 Flutter 的推動),但仍然無法與 Kotlin 相提並論。

Compose 代表着一種獨特的 UI 構建方法,也許最期待 Compose 跨平台功能的受眾,正是那些曾在 Android 上使用過它、又特別喜歡這種 UI 構建體驗的開發者。

想要進一步了解 Compose,國內 Android 開發者可訪問以下鏈接查看中文手冊:

延伸閱讀:

如何在線安裝docker compose詳細步驟

實際上到目前為止還不能直接在Windows上安裝Docker Compose,所以這篇文章要講的是如何在Windows上使用Docker Compose。

先決條件: Docker Machine 已經安裝完畢。

解決方案: 將 Docker-Compose 安裝在Boot2Docker虛擬機中。

1. SSH to VM:

[plain] view plain copy print?

span style=”font-size:14px;”$ docker-machine ssh docker machine name/span

2.獲得root用戶權限:

[plain] view plain copy print?

span style=”font-size:14px;”$ sudo -i/span

3. 運行以下兩條命令(注意:不要使用官方指南中「Install as container」章節中提供的命令。親測無效!)

[plain] view plain copy print?

span style=”font-size:14px;”$ curl -L -`uname -s`-`uname -m` /usr/local/bin/docker-compose/span

[plain] view plain copy print?

span style=”font-size:14px;”$ chmod +x /usr/local/bin/docker-compose/span

4. 回到docker用戶權限:

[plain] view plain copy print?

span style=”font-size:14px;”$ exit/span

5. 測試 Docker-Compose 安裝成功:

[plain] view plain copy print?

span style=”font-size:14px;”$ Docker-Compose –version/span

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/239853.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:18
下一篇 2024-12-12 12:18

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論