当我试图从外部docker容器连接到MariaDB时,我得到了上面的错误。下面是我的docker-compose.yml文件:
version: '3'
services:
mariadb:
image: mariadb
ports:
- "127.0.0.1:3309:3306"
volumes:
- mariadb_volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
networks:
- fastapi_network
fastapi-dev:
build:
context: .
dockerfile: Dockerfile
image: fastapi-dev:latest
container_name: fastapi-dev
command: /start-reload.sh
volumes:
- ./src:/app/src
ports:
- 5000:80
depends_on:
- mariadb
networks:
- fastapi_network
volumes:
mariadb_volume:
driver: local
networks:
fastapi_network:
external: true数据库连接的数据库配置如下:
class DbSettings(BaseSettings):
db_username:str = 'myuser'
db_password: str = 'mypassword'
db_host: str = 'localhost'
db_port: int = '3306'
db_name: str = 'mydatabase'
engine_echo = True
session_autocommit = False
session_autoflush = False
@property
def db_conn_str(self) -> AnyUrl:
return AnyUrl.build(
scheme="mysql+pymysql",
user=self.db_username,
password=self.db_password,
host=self.db_host,
port=str(self.db_port),
path=f"/{self.db_name}"
)在使用'docker-compose up‘部署容器后,我可以看到服务器完全启动并运行,如下所示:
mariadb_1 | 2021-09-06 8:24:10 0 [Note] mysqld: ready for connections.
mariadb_1 | Version: '10.6.4-MariaDB-1:10.6.4+maria~focal' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution考虑到服务器正在运行并接受连接,我不太明白代码出了什么问题。有人能在这方面给我一些建议吗?
发布于 2021-09-06 13:24:05
我刚刚发现了一个错误,db_host应该是'mariadb‘而不是'localhost’。在此更改之后,它现在可以工作了。
https://stackoverflow.com/questions/69073124
复制相似问题