【发布时间】:2022-12-10 02:21:36
【问题描述】:
尽管我尽可能多地用谷歌搜索,但实际上并没有什么适合我的。
因此我的问题是:
我正在学习 docker 和 docker compose。 我做了一个 dockerfile:
# base image
FROM mysql:8.0-debian
# creating user to access db
RUN groupadd -r group-mysql && useradd -r -g user-mysql group-mysql
# required env variable
ENV MYSQL_ROOT_PASSWORD ale123
ENV MYSQL_USER user-mysql
ENV MYSQL_PASSWORD pass123
# expose the default port
EXPOSE 3306
当我 docker 运行等效容器并从容器内部执行命令时,mysql 部分工作得很好,它允许我创建表、用户数据库等。没有连接错误。
现在的问题是,我创建了一个(在我看来)等效的 docker compose 文件
services:
mysql:
image: mysql:8.0-debian
command: sh -c "groupadd -r group-mysql &&
useradd -r -g user-mysql group-mysql &&
tail -f /dev/null"
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_USER: user-mysql
MYSQL_PASSWORD: pass123
ports:
- 3306:3306
当我运行由上述 .yml 文件组成的 docker 时,我尝试运行 docker exec -it containername bash 然后运行 mysql -u root -p 我收到此连接错误:错误 2002 (HY000):无法连接到本地MySQL 服务器通过 socket '/var/run/mysqld/mysqld.sock' (2)
我究竟做错了什么?有人能指出我正确的方向吗?
非常感谢
【问题讨论】:
标签: mysql docker docker-compose docker-container