mysql 使用 Docker 和 Django 在 $PATH 错误中找不到文件?

mysql file not found in $PATH error using Docker and Django?

我正在 Mac OS X 上使用 Django 和 Docker 与 MariaDB。

我正在尝试授予 Django 设置测试数据库的权限。为此,我有一个执行此代码的脚本,sudo docker exec -it $container mysql -u root -p。当我在旋转后执行此操作时,我收到此错误消息,而不是提示输入数据库密码,

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "mysql": executable file not found in $PATH: unknown

在 Ubuntu 机器上,我可以删除数据库的数据文件夹,并在没有错误的情况下加速、减速和 运行 命令,但在我的 Mac ,这是我想使用的主要机器,此修复程序不起作用。有任何想法吗?我有一个 peer pull code 并在他们的 Mac 上尝试它,它对他们做了同样的事情! Docker 对我来说很神奇。

这是我的 docker-compose.yml.

version: "3.3"

networks:
  django_db_net:
    external: false

services:
  django:
    build: ./docker/django
    restart: 'unless-stopped'
    depends_on:
      - db
    networks:
      - django_db_net
    user: "${HOST_USER_ID}:${HOST_GROUP_ID}"
    volumes:
      - ./src:/src
    working_dir: /src/vger
    command: ["/src/wait-for-it.sh", "db:3306", "--", "python", "manage.py", "runserver", "0.0.0.0:8000"]

    ports:
      - "${DJANGO_PORT}:8000"

  db:
    image: mariadb:latest
    user: "${HOST_USER_ID}:${HOST_GROUP_ID}"
    volumes:
      - ./data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=this_is_a_bad_password
      - MYSQL_USER=django
      - MYSQL_PASSWORD=django
      - MYSQL_DATABASE=vger
    networks:
      - django_db_net

还有我的Docker文件

FROM python:latest

ENV PYTHONUNBUFFERED=1
RUN pip3 install --upgrade pip & \
  pip3 install django mysqlclient
ENV MYSQL_MAJOR 8.0
RUN apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 8C718D3B5072E1F5 & \
  echo "deb http://repo.mysql.com/apt/debian/ buster mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list & apt-get update & \
  apt-get -y --no-install-recommends install default-libmysqlclient-dev
WORKDIR /src

我修好了!

这真的很愚蠢,但是 OS X 不喜欢“$container”,所以如果你明确地只写数据库的容器名称,它就像一个魅力!