docker-compose(三)使用Docker-compose管理docker容器,运行springboot项目
1:创建目录mkdir composetestcd composetest2:上传springboot项目test.jar3:创建Dockerfile(简记,Dockerfile文件名大小写一定要一致,入过坑,浪费了两个小时。)FROM openjdk:8-jdk-alpineWORKDIR /homeMAINTAINER mahuiADD test.jar /homeRUN chmod +x /
1:创建目录
mkdir composetest
cd composetest
2:上传springboot项目test.jar
3:创建Dockerfile(简记,Dockerfile文件名大小写一定要一致,入过坑,浪费了两个小时。)
FROM openjdk:8-jdk-alpine
WORKDIR /home
MAINTAINER mahui
ADD test.jar /home
RUN chmod +x /home/test.jar
CMD nohup java -jar test.jar > test.log 2>&1 &
执行build生成镜像
docker build -t test .
4:创建docker-compose.yml
docker-compose.yml模板文件定义一组容器到project,默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。包括:version、services、networks 三部分
版本分别为Version 1,Version 2,Version 3,Version 1以后会被弃用。
version: "3"
services:
store1:
build: .
ports:
- "1103:1101"
- "2224:2223"
image: "test"
networks:
- dev
networks:
dev:
driver: bridge
pro:
driver: bridge
5:启动应用
docker-compose up -d
发现竞然无法访问到nacos,外网可访问到test.jar
到官方查看network 使用文档
1:version 1不支持网络设置
2:Compose在项目(project)创建成功时,会创建一个单独的虚拟内网, 所有的容器将共享内网,network名叫:项目名_default
查看docker network
docker network ls
NETWORK ID NAME DRIVER SCOPE
737de2e31354 bridge bridge local
90a0f47cc3f8 composetest_default bridge local
00735a1a5199 host host local
a1cf3fcdd831 none null local
9398be141862 standalong_net bridge local
在docker compose2.1版本以后,默认network为attachable属性(覆盖所有network),3以上的版本attachable可设置为false,composetest_default为新建的newwork.
使用现有的network配置
version: "3"
services:
store1:
build: .
ports:
- "1103:1101"
- "2224:2223"
network_mode: host
image: "acf003b32780"
再次启动应用
docker-compose up
报错出现
=============================
ERROR: for c530b4800e8a_composetest_store1_1 "host" network_mode is incompatible with port_bindings
ERROR: for store1 "host" network_mode is incompatible with port_bindings
Traceback (most recent call last):
File "docker-compose", line 3, in <module>
File "compose/cli/main.py", line 80, in main
File "compose/cli/main.py", line 192, in perform_command
File "compose/metrics/decorator.py", line 18, in wrapper
File "compose/cli/main.py", line 1165, in up
File "compose/cli/main.py", line 1161, in up
File "compose/project.py", line 708, in up
File "compose/parallel.py", line 106, in parallel_execute
File "compose/parallel.py", line 204, in producer
File "compose/project.py", line 694, in do
File "compose/service.py", line 580, in execute_convergence_plan
File "compose/service.py", line 502, in _execute_convergence_recreate
File "compose/parallel.py", line 106, in parallel_execute
File "compose/parallel.py", line 204, in producer
File "compose/service.py", line 495, in recreate
File "compose/service.py", line 614, in recreate_container
File "compose/service.py", line 333, in create_container
File "compose/service.py", line 937, in _get_container_create_options
File "compose/service.py", line 1069, in _get_container_host_config
File "docker/api/container.py", line 598, in create_host_config
File "docker/types/containers.py", line 339, in __init__
错误原因:
"host" network_mode is incompatible with port_bindings。
host:使用宿主机网络接口功能与port映射同时使用,逻辑比较容易理解,本身已经使用了本地网络,所有端口是与宿主机同步,再作端口映射是本机映射到本机,脱了裤子放屁,多此一举。
果断修改yaml文件。
version: "3"
services:
store1:
build: .
network_mode: host
image: "acf003b32780"
运行成功。springboot admin里正端查看到项目数据。
注:SpringBoot在获取IP设置
spring:
cloud:
inetutils:
ignoredInterfaces://忽略掉一些指定名称的网络接口
- docker0
- test.*
preferredNetworks://只使用192.168开头和10.0开头的ip地址
- 192.168
- 10.0
useOnlySiteLocalInterfaces: true. //只在局域网使用
更多推荐
所有评论(0)