博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker $ 项目部署 :Docker 部署微服务 + Mysql
阅读量:4104 次
发布时间:2019-05-25

本文共 2715 字,大约阅读时间需要 9 分钟。

一.准备工作

这里以两个项目为例:

  这里配置方面需要注意,服务提供者的host名称为server的镜像名,否则服务无法向注册中心注册。

eureka:  client:    serviceUrl:    # server服务端镜像名      defaultZone: http://server:8761/eureka/

把项目打包为jar包,然后。

二.编译镜像

1.编写server的Dockerfile

FROM java:8VOLUME /tmpADD server.jar /app.jarEXPOSE 8761ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述

# docker build -t server .

2.编写client的Dockerfile

FROM java:8VOLUME /tmpADD client.jar /app.jarEXPOSE 8762ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在这里插入图片描述

构建镜像

# docker build -t client .

三.运行服务

3.1.依次以docker命令方式运行

为了使所有容器在同一个网络内能够相互访问,首先创建一个网桥

# docker network create -d bridge micro

运行mysql

# docker volume create mysql_vol# docker run -it --rm --name mysql -v mysql_vol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=roof -p 3306:3306 -d --network micro mysql

运行server

# docker run --name server -d -p 8761:8761 --network micro server

运行client

# docker run --name client  -p 8762:8762 -d --network micro client

3.2.通过docker-compose.yml方式运行

  当服务非常多的时候,一个一个地启动会非常麻烦,我们可以通过编写docker-compose.yml文件,直接命令启动所有的容器。

1.编写docker-compose.yml文件

version: '2'services: mysql:    image: mysql    restart: always    container_name: mysql    environment:      MYSQL_ROOT_PASSWORD: roof    ports:      - "3306:3306"    volumes:      - mysql_vol:/var/lib/mysql    networks:      - micro server:    image: server    container_name: server    ports:      - "8761:8761"    networks:      - micro client:    image: client    container_name: client    ports:      - "8762:8762"    depends_on:      - mysql      - server    networks:      - micronetworks:  micro:    driver: bridgevolumes:  mysql_vol:

2.启动docker-compose运行项目

# docker-compose up -d

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四.通过docker-compose.yml直接编排和运行项目

  docker-compose.yml也可以直接构建镜像,然后运行,跳过第二步,根据上传的jar直接使用docker-compose.yml构建镜像。

1.修改docker-compose.yml文件,其他不变

version: '2'services: mysql:    image: mysql    restart: always    container_name: mysql    environment:      MYSQL_ROOT_PASSWORD: roof    ports:      - "3306:3306"    volumes:      - mysql_vol:/var/lib/mysql    networks:      - micro server:    image: server    build:      context: ./server      dockerfile: ./Dockerfile    container_name: server    ports:      - "8761:8761"    networks:      - micro client:    image: client    build:      context: ./client      dockerfile: ./Dockerfile    container_name: client    ports:      - "8762:8762"    depends_on:      - mysql      - server    networks:      - micronetworks:  micro:    driver: bridgevolumes:  mysql_vol:

改动的关键代码如下

build:

context: ./client
dockerfile: ./Dockerfile
1.build是构建镜像的命令
2.context是构建的路径
3.dockerfile是dockerfile的路径,相对于构建路径。

比如

在这里插入图片描述

在这里插入图片描述
2.在docker-compose.yml文件目录下执行命令构建和编排镜像

# docker-compose up -d

在这里插入图片描述

ABOUT

公众号:【星尘Pro】

github:

推荐阅读

转载地址:http://ebfsi.baihongyu.com/

你可能感兴趣的文章
Android常见错误之android.widget.LinearLayout@4375f248 that was originally added here
查看>>
Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
查看>>
Android进阶2之SlidingDrawer(滑动式抽屉)
查看>>
Android进阶2之Gallery无限循环
查看>>
Android进阶2之图片倒影效果
查看>>
Android进阶2之检索Android的图片库并显示图片详细信息
查看>>
android开发我的新浪微博客户端-OAuth篇(2.1)
查看>>
android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器
查看>>
一个完整的新浪微博客户端android版OAuth认证示例
查看>>
android开发我的新浪微博客户端-阅读微博功能篇(6.2)
查看>>
android开发我的新浪微博客户端-阅读微博UI篇(6.1)
查看>>
android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
查看>>
android开发我的新浪微博客户端-用户授权页面功能篇(3.2)
查看>>
Android进阶2之Http连接GET/POST请求
查看>>
Android进阶2之Http操作访问网络
查看>>
Android 调用网易微博开放API
查看>>
Android进阶2之WebView(浏览器)
查看>>
Android进阶2之oauth认证中UC无法跳转的问题
查看>>
Android进阶2之AsyncTask实现异步处理任务
查看>>
Android进阶2之有道词典开发
查看>>