在 Visual Studio Code (VSC) 中使用开发容器时,我无法连接到 MySQL 数据库,甚至无法从容器内部连接。但是,当我使用
docker-compose up -d mysql
手动启动服务时,我可以从容器内连接到数据库。
我正在使用 Docker Hub 注册表中的 Bitnami MySQL。
这就是我的内容
.devcontainer.json
:
{
"name": "Devcontainer",
"dockerComposeFile": "docker-compose.yml",
"service": "devcontainer",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}"
}
保持尽可能基本。
docker-compose.yml
文件的内容:
version: '3.8'
services:
devcontainer:
image: mcr.microsoft.com/devcontainers/base:ubuntu
volumes:
- ../..:/workspaces:cached
command: sleep infinity
mysql:
image: docker.io/bitnami/mysql:8.0
ports:
- 3306:3306
expose:
- 3306
volumes:
- 'mysql_data:/bitnami/mysql/data'
environment:
- ALLOW_EMPTY_PASSWORD=no
- MYSQL_ROOT_PASSWORD=deOCyZ4cnRa4bRNDAFak8
- MYSQL_USER=user
- MYSQL_PASSWORD=deOCyZ4cnRa4bRNDAFak8
- MYSQL_DATABASE=name
healthcheck:
test: ['CMD', '/opt/bitnami/scripts/mysql/healthcheck.sh']
interval: 15s
timeout: 5s
retries: 6
volumes:
mysql_data:
driver: local
因此,当我在 VSC 中执行
Rebuild without cache and reopen in container
时,它会启动 docker 容器。之后,我使用 docker exec -it <hash> bash
进入容器并尝试登录服务器:
$ mysql -u user -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/bitnami/mysql/tmp/mysql.sock' (2)
当我关闭远程连接并确保容器不再运行时,我使用
docker-compose up -d db
启动容器。
当它运行时,我以相同的方式在容器内启动 bash,然后我可以连接到服务器:
$ mysql -u user -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.31 Source distribution
我 100% 确定我通过复制/粘贴提供了正确的密码。
root 用户也存在同样的连接问题。我也尝试过使用
ALLOW_EMPTY_PASSWORD=true
但结果相同。
我尝试使用 Bitnami 提供的 MariaDB 版本,但也有同样的问题。我没有尝试过原始的 MySQL 镜像,但我以前从未遇到过这个问题。
当我启动开发容器时,没有其他 docker 容器正在运行。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$
知道发生了什么以及如何解决它吗?我是不是做错了什么?
更新:看起来来自 Docker Hub 的原始 MySQL 镜像工作正常。
我也有同样的问题。你有什么解决办法吗?