下面是使用docker部署dubbo项目的方法步骤攻略。
准备工作
在使用docker部署dubbo项目之前,需要保证以下几个工具已经准备就绪:
- docker:一个用来快速构建,发布和运行分布式应用程序的开源容器化平台。
- docker-compose:一个支持定义和运行多个docker容器的工具。
- maven:Java项目构建工具。
步骤一:编写Dockerfile文件
首先需要编写Dockerfile文件,以便在docker中构建镜像。以下是一个样例Dockerfile文件:
FROM openjdk:8-jre
MAINTAINER yourname <youremail@gmail.com>
# Add user dubbo
RUN groupadd -r dubbo && useradd -r -g dubbo dubbo
WORKDIR /usr/src/dubbo
# Add dubbo jar file
ADD target/dubbo-demo-*.jar /usr/src/dubbo/dubbo-demo.jar
# Chown all the files to the dubbo user
RUN chown -R dubbo:dubbo /usr/src/dubbo
USER dubbo
EXPOSE 20880
ENTRYPOINT ["java", "-jar", "/usr/src/dubbo/dubbo-demo.jar"]
该文件基于 openjdk:8-jre 镜像创建,然后添加 dubbo 用户(用于运行 dubbo 服务),将项目打包后的 jar 文件添加到镜像中,最后将镜像配置为以 dubbo 用户身份启动 dubbo 服务,监听 20880 端口。文件中的 /usr/src/dubbo
路径表示放置 dubbo 服务的目录。
步骤二:创建docker-compose文件
接下来,需要创建docker-compose.yml文件,以便docker-compose启动服务。以下是一个样例docker-compose.yml文件:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
dubbo:
build: .
ports:
- "20880:20880"
links:
- zookeeper
depends_on:
- zookeeper
该文件定义了两个服务:
- zookeeper:使用 wurstmeister/zookeeper 镜像启动 zookeeper 服务,并以 2181 端口发布。
- dubbo:使用上一步创建的 Dockerfile 构建 dubbo 服务,并依赖 zookeeper 服务。该服务运行 dubbo 服务,并以 20880 端口发布。启动该服务将会自动连接 zookeeper 服务。
步骤三:运行服务
在所有必备项准备完成后,即可使用以下命令启动服务:
$ docker-compose up
该命令将自动运行 zookeeper 和 dubbo 服务,并将它们连接在一起。当服务运行时,可以使用 docker ps 命令查看服务是否正在运行:
$ docker ps
当服务运行成功后,可以使用任何可以连接到它的客户端来进行dubbo通信。
示例说明一:部署dubbo官方demo
以下示例说明如何通过docker部署dubbo官方demo:
- 下载dubbo官方demo:
$ git clone https://github.com/apache/dubbo-spring-boot-project.git
- 进入dubbo-spring-boot-project项目,构建并打包
$ cd dubbo-spring-boot-project/dubbo-samples
$ mvn package
- 在dubbo-spring-boot-project目录中,创建docker-compose.yml文件并写入以下内容:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
demo-provider:
build:
context: dubbo-samples-provider
dockerfile: Dockerfile
ports:
- "20880:20880"
links:
- zookeeper
depends_on:
- zookeeper
demo-consumer:
build:
context: dubbo-samples-consumer
dockerfile: Dockerfile
links:
- demo-provider
- zookeeper
- 在dubbo-samples-provider目录下创建Dockerfile文件并写入以下内容:
FROM openjdk:8-jre
MAINTAINER yourname <youremail@gmail.com>
# Add user dubbo
RUN groupadd -r dubbo && useradd -r -g dubbo dubbo
WORKDIR /usr/src/dubbo
# Add dubbo jar file
ADD target/dubbo-samples-provider-*-exec.jar /usr/src/dubbo/dubbo-demo.jar
# Chown all the files to the dubbo user
RUN chown -R dubbo:dubbo /usr/src/dubbo
USER dubbo
EXPOSE 20880
ENTRYPOINT ["java", "-jar", "/usr/src/dubbo/dubbo-demo.jar"]
- 在dubbo-samples-consumer目下下创建Dockerfile文件并写入以下内容:
FROM openjdk:8-jre
MAINTAINER yourname <youremail@gmail.com>
# Add user dubbo
RUN groupadd -r dubbo && useradd -r -g dubbo dubbo
WORKDIR /usr/src/dubbo
# Add dubbo jar file
ADD target/dubbo-samples-consumer-*-exec.jar /usr/src/dubbo/dubbo-demo.jar
# Chown all the files to the dubbo user
RUN chown -R dubbo:dubbo /usr/src/dubbo
USER dubbo
CMD ["java", "-jar", "/usr/src/dubbo/dubbo-demo.jar"]
- 运行服务
$ docker-compose up
- 当服务运行成功后,使用以下命令测试dubbo服务,确保其正常工作:
curl -X POST \
http://127.0.0.1:8080/say-hello \
-H 'content-type: application/json' \
-d '{"name":"world"}'
示例说明二:基于SpringBoot的dubbo项目
以下示例说明如何部署基于SpringBoot的dubbo项目:
- 下载SpringBoot的dubbo项目:
$ git clone https://github.com/apache/dubbo-spring-boot-starter.git
- 在项目根目录中打包dubbo-admin:
$ cd dubbo-admin
$ mvn package
- 在项目根目录中创建Dockerfile并写入以下内容:
FROM openjdk:8-jre
MAINTAINER yourname <youremail@gmail.com>
# Add user dubbo
RUN groupadd -r dubbo && useradd -r -g dubbo dubbo
WORKDIR /usr/src/dubbo
# Add dubbo jar file
ADD target/dubbo-admin-*.jar /usr/src/dubbo/dubbo-admin.jar
# Chown all the files to the dubbo user
RUN chown -R dubbo:dubbo /usr/src/dubbo
USER dubbo
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/usr/src/dubbo/dubbo-admin.jar"]
- 在项目根目录中创建docker-compose.yml文件并写入以下内容:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
admin:
build: .
ports:
- "8080:8080"
links:
- zookeeper
depends_on:
- zookeeper
environment:
- dubbo.registry.address=zookeeper://zookeeper:2181
- 运行服务
$ docker-compose up
- 访问http://127.0.0.1:8080/可以看到dubbo-admin的控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用docker部署dubbo项目的方法步骤 - Python技术站