Dynamically add docker container ip in Dockerfile ( redis)

后端 未结 2 1590
一个人的身影
一个人的身影 2021-01-27 11:50

How do I dynamically add container ip in other Dockerfile ( I am running two container a) Redis b) java application . I need to pass redis url on run time to my java arguments

2条回答
  •  星月不相逢
    2021-01-27 12:09

    you can assign a static ip address to your dokcer container when you run it, following the steps:

    1 - create custom network:

    docker network create --subnet=172.17.0.0/16 redis-net
    

    2 - run the redis container to use the specified network, and assign the ip address:

    docker run --net redis-net --ip 172.17.0.2 --name my-redis -d redis
    

    by then you have the static ip address 172.17.0.2 for my-redis container, you don't need to inspect it anymore.

    3 - now it is possible to run the java appication container but it must use the same network:

    docker run --net redis-net my-java-app
    

    of course you can optimize the solution, by using env variables or whatever you find convenient to your setup.

    More infos can be found in the official docs (search for --ip):

    • docker run
    • docker network

    Edit (add docker-compose):

    I just find out that it is also possible to assign static ips using docker-compose, and this answer gives an example how.

    This is a similar example just in case:

    version: '3'
    
    services:
      redis:
        container_name: redis
        image: redis:latest
        restart: always
        networks:
          vpcbr:
            ipv4_address: 172.17.0.2
    
      java-app:
        container_name: java-app
        build: 
        networks:
          vpcbr:
            ipv4_address: 172.17.0.3
        depends_on:
         - redis
    
    networks:
      vpcbr:
        driver: bridge
        ipam:
         config:
           - subnet: 172.17.0.0/16
             gateway: 172.17.0.1
    

    official docs: https://docs.docker.com/compose/networking/

    hope this helps you find your way.

提交回复
热议问题