首页 > 解决方案 > 未使用 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:

标签: mysqldockerdocker-compose

解决方案


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

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

MYSQL_ROOT_PASSWORD: "myroot$passowrd"

MYSQL_ROOT_PASSWORD: "myroot$$passowrd"

它工作正常。


推荐阅读