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
本文详细介绍Dockerfile与docker-compose.yaml的编写方法,用于高效部署微服务集群。涵盖Docker命令、网络配置及docker-compose工具的使用技巧,助力开发者快速上手。

748

被折叠的 条评论
为什么被折叠?



