本文共 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 .
为了使所有容器在同一个网络内能够相互访问,首先创建一个网桥
# 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
当服务非常多的时候,一个一个地启动会非常麻烦,我们可以通过编写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也可以直接构建镜像,然后运行,跳过第二步,根据上传的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
公众号:【星尘Pro】
github:
推荐阅读
转载地址:http://ebfsi.baihongyu.com/