提问者:小点点

Docker如何使用Docker compose[复制]指定ip地址


我使用docker compose为我的容器充电,我需要在容器和主机之间连接,所以我需要一个我始终可以访问的ip,我知道linux上docker的默认ip是172.17。0.x,但奇怪的是,每次启动容器时,ip都会从172.18更改。0.1至172.19。0.1至172.20。0.1等。。。,一步一步地


共1个答案

匿名用户

为什么不简单地使用服务,而不是每次都指定ip地址?作为参考,我正在使用mysql和redis数据库搭建flask。

让这成为docker-compose.yml文件:

version: "3"
services:
  web:
    build: ./apps  #Go inside this directory in local machine while building
    # volumes:
    #   - ./apps :/usr/src/apps  #mount the apps directory into /usr/src/apps inside the container
    ports:
      - 5000:5000
    links:
      - db
      - red
  mysql:
    image: mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD="" #You can even have this in config
      - MYSQL_USER=root
      - MYSQL_PASSWORD=123 ##You can even have this in config
      - MYSQL_DATABASE=mydatabase
    volumes:
      - ./apps:/usr/src/apps #Not getting Path
  redis:
    image: "redis"
    ports:
      - 6379:6379

这是烧瓶文件:

from flask import Flask
import mysql.connector
import redis

app = Flask(__name__)

def connect_redis():
    red_db = redis.Redis(host="redis",port=6379) #This service web is connected with redis
    return red_db

def connect_db(): #This function connects to the db
    mydb = mysql.connector.connect(
      host="mysql", #This service web is connected with mysql
      user="root",
      passwd="123",
    )
    #passwd="123",
    return mydb
#... Further code logic

所以,通过这种方式,您可以在docker compose文件中命名该服务,并在另一个服务中使用它来运行该服务。这种方法比获取每次启动/创建容器时都会更改的ip要好。