docker-compose(三)使用Docker-compose管理docker容器,运行springboot项目

6 篇文章 0 订阅
4 篇文章 0 订阅

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. //只在局域网使用

 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值