MYSql容器未使用docker-compose进行设置

时间:2019-11-17 13:26:17

标签: mysql docker docker-compose

我正在尝试使用MySQL码头工人镜像建立一个简单的容器。我可以运行容器并使用以下命令提示符对其进行设置

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD="myrootpassoword" -d mysql

但是当我尝试使用docker-compose进行操作时,容器启动了,但是我无法使用mysql -p连接到mysql db。我的密码不起作用,它使访问被拒绝,并且我无法使用该容器。以下是我的撰写文件。我想念什么吗?

# 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:

2 个答案:

答案 0 :(得分:0)

结合docker-compose文件,您应该能够通过以下方式连接到mysql实例

mysql -h localhost -u myadmin -pmypassword

请注意缺少密码的空格!

答案 1 :(得分:0)

最后,我找到了引起此问题的问题。我的密码包含$符号,该符号用于在docker中获取变量,因此下一个字符/部分被视为变量,并且未设置值,因此将其视为空白而未引发任何错误。

为了逃避它,我不得不使用两个美元符号$$ 所以我从

修改了代码
MYSQL_ROOT_PASSWORD: "myroot$passowrd"

MYSQL_ROOT_PASSWORD: "myroot$$passowrd"

它正常工作。