apache-apollo Dockfile 鏡像制作
阿新 • • 發佈:2019-04-10
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 .
缺陷
由於在Dockerfile 設置了VOLUME,我的主要目的是為了讓容器啟動時訪問配置文件是從宿主機訪問,而不是從容器裏面訪問,但是容器創建的時候是不會將配置文件復制到宿主機上的,所以就需要我們手動從容器裏面復制配置文件;
其實都不用手動下載安裝包的,直接在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
說明:
-v 裏面的etc 就是我上述缺陷中提到的
使用命令運行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
說明:
- 這裏的volumes裏面的etc 就是我上述缺陷中提到的怎麽去獲取etc
驗證是否成
你雲主機或者虛擬機的 ip+61680 成功就標識你的容器運行成功
apache-apollo Dockfile 鏡像制作