问题描述
我正在 Mac OS X 上将 Django 和 Docker 与 MariaDB 结合使用。
我正在尝试授予 Django 设置测试数据库的权限。为此,我有一个脚本来执行此代码 sudo docker exec -it $container MysqL -u root -p
。当我在启动后执行此操作时,我收到此错误消息,而不是提示输入数据库密码,
OCI 运行时 exec 失败:exec 失败:container_linux.go:370:导致启动容器进程:exec:“MysqL”:在 $PATH 中找不到可执行文件:未知
在 Ubuntu 机器上,我可以删除数据库的数据文件夹并启动、旋转和运行命令而不会出现错误,但在我的 Mac 上,这是我想使用的主要机器,此修复不起作用。有任何想法吗?我有一个对等拉代码并在他们的 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
还有我的 Dockerfile
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”,所以如果你明确地只写数据库的容器名称,它就像一个魅力!