SpringBoot37-分布式系统开发-基于Docker部署3

            以spring cloud开发的微服务程序是否适合在docker环境下部署。代码参考之前的博客:http://blog.csdn.net/j903829182/article/details/78511059


一,Dockerfile编写

     前面博客的6个微服务的Dockerfile的编写几乎完全一致,下面以config模块为例。

1,runboot.sh脚本编写

     位于src/main/docker下:


sleep 10
java -jar /app/config.jar

根据启动顺序,调整sleep的时间


2,Dockerfile编写

     位于src/main/docker下:

FROM hub.c.163.com/library/java:latest
MAINTAINER  jack
VOLUME /tmp
RUN mkdir /app
ADD config.jar /app/app.jar
ADD runboot.sh /app/
RUN bash -c 'touch /app/app.jar'
WORKDIR /app
RUN chmod a+x runboot.sh
EXPOSE 8888
CMD /app/runboot.sh

为不同的微服务我们只需修改:

ADD config.jar /app/app.jar

以及端口:

EXPOSE 8888

3,Docker的maven插件

      在开发机器编译Docker镜像到服务器,使用docker-maven-plugin即可,在所有程序的pom.xml内增加下面代码:

<build>
		<finalName>config</finalName>
		<plugins>
			<!--<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>-->
			<!--<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.20</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>-->

			<!--在开发机器编译docker镜像到服务器使用docker-mave-plugin-->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-mave-plugin</artifactId>
				<configuration>
					<imageName>${project.name}:${project.version}</imageName>
					<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
					<skipDockerBuild>false</skipDockerBuild>
					<resources>
						<resource>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}</include>
						</resource>
					</resources>
				</configuration>
			</plugin>

		</plugins>
	</build>

4,编译镜像

      使用docker-maven-plugin,默认将Docker编译到localhost。如果是远程Linux服务器,请在环境变量中配置:DOCKER_HOST,本例的linux服务器地址是:192.168.0.104



     在控制台进入代码的目录,执行下面的语句:

mvn clean package docker:build -DskipTests


   编译后效果如下:




    查看linux服务器上的镜像,如下:




二,Docker Compose

    Docker Compose是用来定义和运行多容器应用的工具。关于Docker Compose的安装和使用可以查看:

https://docs.docker.com/compose/。

    Docker Compose使用一个docker-compose.yml来描述多容器的定义,使用下面命令运行整个应用:

docker-compose up



三,docker-compose.yml编写

       docker-compose.yml的编写代码如下:

postgresdb:
  image: busybox
  volumes: - /var/lib/postgresql/data

postgres:
  name: postgres
  image: postgres
  hostname: postgres
  volumes_from:
    - postgresdb
#ports:
# -"5432:5432"
  environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=postgres

discovery:
  image: "discovery:1.0.0-SNAPSHOT"
  hostname: discovery
  name: discovery
  ports:
    - "8761:8761"

config:
  image: "config:1.0.0-SNAPSHOT"
  hostname: config
  name: config
  links:
    - discovery
  environment:
    EUREKA_HOST: discovery
    EUREKA_PORT: 8761
#ports:
#  - "8888:8888"

person:
  image: person:1.0.0-SNAPSHOT
  hostname: person
  links:
    - discovery
    - config
    - postgres
  environment:
    EUREKA_HOST: discovery
    EUREKA_PORT: 8761
    SPRING_PROFILES_ACTIVE: docker

#ports:
#  - "8082:8082"

some:
  image: some:1.0.0-SNAPSHOT
  hostname: some
  links:
    - discovery
    - config
    environment:
      EUREKA_HOST: discovery
      EUREKA_PORT: 8761
      SPRING_PROFILES_ACTIVE: docker

#ports:
  - "8083:8083"
ui:
  image: ui:1.0.0-SNAPSHOT
  hostname: ui
  links:
    - discovery
    - config
    - person
    - some
  environment:
    EUREKA_HOST: discovery
    EUREKA_PORT: 8761
    SPRING_PROFILES_ACTIVE: docker
  ports:
    - "80:80"

monitor:
  image: monitor:1.0.0-SNAPSHOT
  hostname: monitor
  links:
    - discovery
    - config
    - person
    - some
    - ui
  environment:
    EUREKA_HOST: discovery
    EUREKA_PORT: 8761
    SPRING_PROFILES_ACTIVE: docker

#ports:
# - "8989:8989"

#enviroment:给容器使用的变量,在容器中使用${}来调用
#links:当前容器依赖的容器,可直接使用依赖容器的已有端口
#ports:将我们要暴露的端口映射出来,不需要暴露的端口则不做映射







四,运行

    将docker-compose.yml上传至linux服务器,在文件当前目录执行下面命令:

docker-compose up -d


-d表示后台运行

启动效果如下:












源码地址:https://github.com/wj903829182/springcloud3









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值