mysql - 未使用 docker-compose 设置 MYSql 容器
问题描述
我正在尝试使用MySQL docker 映像设置一个简单的容器。我能够运行容器并使用命令提示符进行设置,如下所示
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD="myrootpassoword" -d mysql
但是当我尝试使用 docker-compose 进行操作时,容器会启动,但我无法使用mysql -p
. 我的密码不起作用,它一直被拒绝访问,我无法使用容器。下面是我的撰写文件。我错过了什么吗?
# Docker Compose file Reference (https://docs.docker.com/compose/compose-file/)
version: '3'
# Define services
services:
# Mysql Service
db:
image: "mysql" # Use a public mysql image to build the mysql service
volumes:
- dbvol:/var/lib/mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "myrootpassowrd"
MYSQL_DATABASE: "mydb"
MYSQL_USER: "myadmin"
MYSQL_PASSWORD: "mypassword"
ports:
- "3306:3306" # Forward the exposed port 3306 on the container to port 3306 on the host machine
container_name: test-mysql
volumes:
dbvol:
解决方案
最后我找到了导致这个麻烦的问题。我的密码包含用于在 docker 中获取变量的 $ 符号,因此下一个字符/部分被视为变量,并且由于未设置值,因此将其视为空白而实际上没有引发任何错误。
为了逃避它,我不得不使用两个美元符号$$
所以我修改了代码
MYSQL_ROOT_PASSWORD: "myroot$passowrd"
至
MYSQL_ROOT_PASSWORD: "myroot$$passowrd"
它工作正常。
推荐阅读
- android-fragments - Android、NavigationComponent、Fragment之间的通信
- php - 在引导方法中获取 Laravel 5 控制器名称
- wpf - 在ListView中显示内容,文字被截断
- git - 错误的部分合并后合并两个分支
- java - 抽屉缓慢滚动
- javascript - 我想使用 javascript 或 jQuery 创建动态选择选项列表
- angular - SSR 在 Angular 中采用错误的环境
- jquery - 在头脑中声明事物的最佳顺序是什么?
- sql - 显示字符串的水平到垂直的转换
- ios - 暂停时是否有可能应用程序“重新启动”?