1. 程式人生 > >apache-apollo Dockfile 鏡像制作

apache-apollo Dockfile 鏡像制作

sockets 當前目錄 volume 拷貝 如果 們的 info chm tails

apache-apollo Dockfile 鏡像制作

apache-apollo

Apache Apollo是一個代理服務器,其是在ActiveMQ基礎上發展而來的,可以支持STOMP, AMQP, MQTT, Openwire, SSL, WebSockets 等多種協議。

apache-apollo-Dockerfile 詳解

如果你對Dockerfile還不是很了解的話可以參考下面的文章

參考文章

Docker Dockerfile 定制鏡像

Dockerfile詳解

1. 下載apache-apollo

apache-apollo-1.7-Downloads

2. 上傳到服務器目錄
(我文件路徑如下所示)

技術分享圖片

我的apache-apollo安裝包是改過名字的,所以Dockerfile裏面的目錄名稱有點不太一樣,所以一切請根據自己的文件目

3 .編輯Dockerfile內容

#我們的鏡像基於jdk8,因為apollo是采用java開發的
FROM openjdk:8-jdk
#署名
MAINTAINER lengff [email protected]
#指定工作目錄
WORKDIR /data/server
#拷貝apollo安卓包到容器裏面
COPY ./apollo-1.7.tar.gz .
#暴露需要用到的端口,這裏的端口是根據你配置的apollo.xml配置文件中的端口
EXPOSE 61680 61681 61613 61614 61623 61624
#解壓安裝包
RUN tar zxvf apollo-1.7.tar.gz&& cd /data/server/apache-apollo-1.7/bin&& chmod a+x apollo#新建一個broker
&& ./apollo create MqttBroker&& cd /data/server/apache-apollo-1.7/bin/MqttBroker/bin&& chmod a+x apollo-broker
#掛載配置文件目錄
VOLUME /data/server/apache-apollo-1.7/bin/MqttBroker/etc
#重新指定工作目錄
WORKDIR /data/server/apache-apollo-1.7/bin/MqttBroker/bin/
#鏡像啟動命令
CMD ./apollo-broker run

4 .構建鏡像

命令:

docker build -t apollo .

缺陷

  1. 由於在Dockerfile 設置了VOLUME,我的主要目的是為了讓容器啟動時訪問配置文件是從宿主機訪問,而不是從容器裏面訪問,但是容器創建的時候是不會將配置文件復制到宿主機上的,所以就需要我們手動從容器裏面復制配置文件;

  2. 其實都不用手動下載安裝包的,直接在Dockerfile 的RUN裏面執行就可以了,但是網絡不穩定,總是下載失敗,所以推擠手動下載

命令:

docker cp apollo:/data/server/apache-apollo-1.7/bin/MqttBroker/etc/ .

說明:

後面的. 可以我們指定目錄的, .代表當前目錄

docker 啟動apollo鏡像

命令:

docker run     #映射端口
    -p 61680:61680     -p 61623:61623     -p 61624:61624     -p 61613:61613     -p 61614:61614     #指定容器名稱
    --name apollo     #掛載配置文件
    -v /usr/local/docker/apollo/etc:/data/server/apache-apollo-1.7/bin/MqttBroker/etc     #守護態運行成功(後臺運行)
    -d     #鏡像名稱
    apollo

說明:

  1. -v 裏面的etc 就是我上述缺陷中提到的

  2. 使用命令運行docker 還是不怎麽方便看懂意思的,所以推薦使用docker-compose運行docker容器

docker-compose 啟動Apollo鏡像

我的docker-compose.yml內容如下

version: "3"
services: 
 apollo:
  restart: always
  container_name: apollo
  image: apollo
  ports:
   - 61680:61680
   - 61623:61623
   - 61624:61624
   - 61613:61613
   - 61614:61614
  volumes:
   - /usr/local/docker/apollo/etc:/data/server/apache-apollo-1.7/bin/MqttBroker/etc

說明:

  1. 這裏的volumes裏面的etc 就是我上述缺陷中提到的怎麽去獲取etc

驗證是否成

你雲主機或者虛擬機的 ip+61680 成功就標識你的容器運行成功

apache-apollo Dockfile 鏡像制作