在docker中发布微服务

本文详细介绍Dockerfile与docker-compose.yaml的编写方法,用于高效部署微服务集群。涵盖Docker命令、网络配置及docker-compose工具的使用技巧,助力开发者快速上手。
摘要由CSDN通过智能技术生成

Dockerfile文件


//使用最新的debian作为基础镜像,debain为linux环境
FROM debian:latest
//运行mkdir 创建app目录
RUN mkdir /app
//切换目录
WORKDIR /app
//将当前目录中的可执行文件添加到/app目录中
ADD email-service /app/email-service
//运行邮件服务
CMD ["./email-service"]

Dockerfile文件应创建于微服务目录中,docker run -p 50051:50051 email-service可启动在docker中运行服务。

docker-compose.yaml文件


当微服务数量很多时,按照上面的启动方法我们需要一个个启动,这样太过麻烦,也可能出现错误。

可以使用docker-compose工具管理,在微服务主目录中创建docker-compose.yaml进行各个微服务的配置,然后可使用docker-compose命令启动和停止。

docker-compose.yaml文件编写

version: '3.1'

services:
  login-service:
    build: ./login-service
    ports:
      - 9000:9000
    environment:
      MICRO_ADDRESS: ":9000"
      MICRO_REGISTRY: "consul"
    networks:
      default:
        ipv4_address: 172.19.0.20

  email-service:
    build: ./email-service
    ports:
      - 9001:9001
    environment:
      MICRO_ADDRESS: ":9001"
      MICRO_REGISTRY: "consul"
    networks:
      default:
        ipv4_address: 172.19.0.21   //指定服务运行环境ip

networks:
  default:
    external:
      name: net2    //net2是我在docker中创建的网络

 docker-compose工具常用命令

//在docker中生成/更新镜像
docker-compose build email-service 
//运行指定的email-service
docker-compose run email-service
//后台运行
docker-compose up -d email-service
//停止正在运行的服务,需要使用docker ps 查看对应服务的id然后指定停止
docker-compose stop 2a23
//停止所有服务
docker-compose stop $(docker ps -aq)

常用的几个docker命令


//查看镜像
docker images
//删除镜像,需要IMAGE ID
docker rmi 2e23
//拉取资源,mysql 5.7 version
docker pull hub.c.163.com/library/mysql:5.7
//取别名,改成mysql:5.7
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
//运行实例,--name 名字,-p 主机端口:docker端口映射 -e 变量 -d 后台启动mysql:5.7
docker run --name mysql-main -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
//切换到mysql-main镜像中,执行bash
docker exec -it mysql-main bash
//停止服务
docker stop 2e23
//删除服务
docker rm 2e23
//查看服务所使用的虚拟ip,10a6 是使用docker ps查看的服务的CONTAINER ID 
docker inspect 10a6 | grep IPAddress
//在使用docker run命令时,可指定服务随docker的启动而启动
--restart=always
//重启docker
service docker restart

小提示


如果想让docker中的服务连通外网,可开启网络转发

sysctl net.ipv4.ip_forward=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值