将/usr/local/bin挂载到python:3 Docker镜像
我想把 /usr/local/bin/
这个文件夹从 docker 的 python:3 镜像挂载到我的主机上。这样做的原因是我希望我的 PyCharm 社区版能够使用 docker 中的解释器来进行开发。
这是我的 docker-compose 文件:
version: '3.8'
services:
db:
image: mysql:8.0
cap_add:
- SYS_NICE
restart: always
environment:
- MYSQL_DATABASE=mydb
- MYSQL_ROOT_PASSWORD=root
ports:
- '3306:3306'
volumes:
- db:/var/lib/mysql
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
web:
build: .
command: python app/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code/app
- ./python-env:/usr/local/bin/
ports:
- "8000:8000"
environment:
- DB_NAME=mydb
- DB_USER=root
- DB_PASSWORD=root
depends_on:
- db
volumes:
db:
driver: local
问题出在这一行:
- ./python-env:/usr/local/bin/
错误信息是:
来自守护进程的错误响应:为容器创建任务失败:创建 shim 任务失败:OCI 运行时创建失败:runc 创建失败:无法启动容器进程:执行: "python":在 $PATH 中找不到可执行文件:未知
我尝试在我的 docker 构建文件中设置一个符号链接,指向 /usr/local/bin
并挂载那个目录,但没有成功。有没有人对这个问题有什么想法?
1 个回答
0
bin文件夹里放着操作系统需要的重要可执行文件。当你把自己创建的python-env挂载到docker的user/local/bin时,它找不到挂载文件夹(python-env)里的任何必要文件,就会报错。
如果你想在主机和容器之间共享一个Python环境,你可以:
- 在主机上创建一个Python虚拟环境,然后把这个环境挂载到容器的其他目录里。
- 更新容器的PATH环境变量,把挂载的虚拟环境中的可执行文件路径加进去。
# Prepend "/my/custom/path" to the PATH which contains python executable
ENV PATH=/my/custom/path:$PATH
# Rest of your Docker Configs