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”,所以如果你明确地只写数据库的容器名称,它就像一个魅力!
我正在 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”,所以如果你明确地只写数据库的容器名称,它就像一个魅力!