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