使用docker-compose运行springcloud项目
Posted 风吹满楼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用docker-compose运行springcloud项目相关的知识,希望对你有一定的参考价值。
前言:
学习Docker的过程中,一直想使用Docker运行SpringCloud程序,今天就将搭建过程记录下来,以作总结。
一、Docker安装
这里因为一些原因,被迫写了个Centos下的Docker安装脚本。至于为什么被迫,这里先埋下一个伏笔。
#!/bin/bash # Centos新版本Docker安装:https://www.cnblogs.com/Peter2014/p/7704306.html # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE yum makecache fast yum install docker-ce-18.06.0.ce -y # Step 4: 开启Docker服务 systemctl restart docker mkdir -p /etc/docker tee /etc/docker/daemon.json <<-\'EOF\' { "registry-mirrors": ["https://vcugatat.mirror.aliyuncs.com"], "hosts": [ "tcp://0.0.0.0:0306", "unix:///var/run/docker.sock" ] } EOF systemctl daemon-reload systemctl restart docker systemctl enable docker
二、使用Maven插件生成镜像
在本地使用Maven插件可以直接在远程服务器生成镜像,比较方便,但是此方法会暴露Docker服务的端口,可能产生隐患,请谨慎使用!
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <!-- Docker服务地址 --> <dockerHost>http://122.152.000.000:6030</dockerHost> <!-- 镜像名 --> <imageName>${project.artifactId}</imageName> <!-- Dockerfile文件地址 --> <dockerDirectory>src/main/docker</dockerDirectory> <imageTags>1.0</imageTags> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
application.yml配置文件中,注册中心的ip修改为容器名。
eureka: client: serviceUrl: # defaultZone: http://localhost:1111/eureka defaultZone: http://eureka-server:1111/eureka #注册中心地址改为容器名
注意:
请使用自己的docker服务地址,上面的地址本人做过改动;
Dockerfile文件编写请参考博客:docker部署spring cloud项目。请注意,此Dockerfile文件使用的基础镜像是 frolvlad/alpine-oraclejdk8:slim ,且我打开了服务器上的Docker端口。这两个因素导致了我后面一直重装系统,不得不写一个脚本安装docker。因为一旦使用 frolvlad/alpine-oraclejdk8:slim 镜像,且Docker服务端口开放,我的服务器必定会被注入一个挖矿镜像,从而成为矿机!!因此,我强烈推荐使用官方镜像:openjdk:8,且谨慎开放Docker服务端口。
三、使用Docker搭建SpringCloud项目
常规启动三个镜像,容器是不能联通的,必须手动为三个容器创建一个共同的网络,容器间才可以保持通讯。
首先创建一个名为cloud的桥接网络 docker network create -d bridge cloud 依次启动三个镜像,并且连接到创建的cloud网络上 docker run -d --name eureka-server -p 1111:1111 --network cloud eureka-server docker run -d --name provider -p 8000:8000 --network cloud provider docker run -d --name consumer -p 8001:8001 --network cloud consumer
可以看到,服务已经注册到注册中心并且可以正常访问。
四、使用Docker-compose搭建springcloud项目
version: "3" services: eureka-server: image: eureka-server:1.0 ports: - "1111:1111" volumes: - /usr/local/cloud/logs/eureka-server:/logs networks: - cloud #container_name: simple-provider-user: image: simple-provider-user:1.0 ports: - "8000:8000" volumes: - /usr/local/cloud/logs/provider:/logs networks: - cloud depends_on: - eureka-server simple-consumer-movie: image: simple-consumer-movie:1.0 ports: - "8001:8001" volumes: - /usr/local/cloud/logs/consumer:/logs networks: - cloud depends_on: - eureka-server networks: clooud: driver: bridge
在此docker-compose.yml目录,运行docker-compose up -d,OK。
至此,使用docker搭建springcloud项目就已经完成了,但是远远不够到生产级别,还需继续学习!
以上是关于使用docker-compose运行springcloud项目的主要内容,如果未能解决你的问题,请参考以下文章
使用 docker 运行多个项目,每个项目都使用 docker-compose 运行
使用docker-compose简化docker run 运行参数
如何使用 pycharm 调试在 docker-compose 中运行的进程
Gravitational Teleport docker-compose简单运行