【问题标题】:Docker: Adding mysql image to project isnt workingDocker:将 mysql 映像添加到项目不起作用
【发布时间】:2020-06-05 18:23:17
【问题描述】:

我正在尝试将 mysql 添加到我的 docker 项目中,但我不断收到错误

db_1        | 2020-06-05T18:09:28.588053Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.20) initializing of server in progress as process 43
db_1        | 2020-06-05T18:09:28.611235Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
db_1        | 2020-06-05T18:09:28.611255Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
db_1        | 2020-06-05T18:09:28.613001Z 0 [ERROR] [MY-010119] [Server] Aborting
db_1        | 2020-06-05T18:09:28.613491Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20)  MySQL Community Server - GPL.

当我做docker ps 我明白了

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                          PORTS                    NAMES
9f561510f33d        frontend               "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes                    0.0.0.0:3000->3000/tcp   frontend_1
2c3f88dc6f6b        backend                "python3 manage.py r…"   5 minutes ago       Up 5 minutes                    0.0.0.0:8000->8000/tcp   backend_1
d0768da38e93        mysql:latest           "docker-entrypoint.s…"   5 minutes ago       Restarting (1) 24 seconds ago                            db_1

我 cd 进入 var/lib 以获取容器 2c3f88dc6f6b 并且没有看到 mysql 目录。不确定这是否可能是问题,但如果是,为什么没有 mysql 文件夹?

为什么我会看到这个错误?

docker-compose.yml

version: "3.2"
services:
  backend:
    build: ./backend
    volumes:
      - ./backend:/app/backend
    ports:
      - "8000:8000"
    stdin_open: true
    tty: true
    command: python3 manage.py runserver 0.0.0.0:8000
    links:
      - db
  frontend:
    build: ./frontend
    volumes:
      - ./frontend:/app
      # One-way volume to use node_modules from inside image
      - /app/node_modules
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
      - CHOKIDAR_USEPOLLING=true
    depends_on:
      - backend
    tty: true
    command: npm start
  db:
    image: mysql:latest
    restart: always
    volumes:
      - "./.mysql/db:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test
      MYSQL_USER: root
      MYSQL_PASSWORD: root
    ports:
      - "3306:3306"

【问题讨论】:

    标签: mysql docker docker-toolbox


    【解决方案1】:

    当您尝试挂载卷时出现此错误,对于您的环境变量,我使用的是 Windows

    mysql:
        image: mysql:8.0.17
        container_name: localmysql
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: 123456
        ports:
          - 3306:3306
        volumes:
          - C:\containers_data\mysql:/var/lib/mysql
    

    其他观察:

    1. 你不需要在后端做链接,只要把db像主机名一样
    2. 后端依赖数据库

    检查我在 github 上的 repo: https://github.com/buster95/dockerinfra

    【讨论】:

      【解决方案2】:

      这是因为本地目录./.mysql/db 有问题。您是否尝试按照错误消息中的建议删除此目录中的所有数据?

      【讨论】:

        【解决方案3】:

        我发现我是,我必须在下面进行更改。

        version: "3.2"
        services:
          backend:
            build: ./backend
            volumes:
              - ./backend:/app/backend
            ports:
              - "8000:8000"
            stdin_open: true
            tty: true
            command: python3 manage.py runserver 0.0.0.0:8000
            links:
              - db
          frontend:
            build: ./frontend
            volumes:
              - ./frontend:/app
              # One-way volume to use node_modules from inside image
              - /app/node_modules
            ports:
              - "3000:3000"
            environment:
              - NODE_ENV=development
              - CHOKIDAR_USEPOLLING=true
            depends_on:
              - backend
            tty: true
            command: npm start
          db:
            image: mysql:latest
            restart: always
            volumes:
              - db_data:/var/lib/mysql  #<------------HAD TO ADD THIS
            environment:
              MYSQL_ROOT_PASSWORD: root
              MYSQL_DATABASE: test
              MYSQL_USER: root
              MYSQL_PASSWORD: root
            ports:
              - "3306:3306"
        volumes:#<------------HAD TO ADD THIS
          db_data: {}#<------------HAD TO ADD THIS
        

        【讨论】:

          猜你喜欢
          • 2014-03-14
          • 1970-01-01
          • 2020-03-31
          • 2018-09-23
          • 2020-01-21
          • 1970-01-01
          • 2020-12-02
          • 2013-06-01
          • 1970-01-01
          相关资源
          最近更新 更多