我正在研究一个Python-Flask项目,该项目具有两个分别用于Web应用程序和postgres数据库的docker容器。我想开始在Web应用程序中使用rq和redis,所以我添加了一个存放redis服务器的docker容器。当我尝试从Web应用程序容器ping Redis容器时,我无法使用redis-cli
。 Redis已安装在Web应用程序容器中。为什么不能从Web应用程序容器中使用redis-cli
?
当我从Redis容器中对Redis服务器执行ping操作时,响应指示服务器已启动。
docker exec -it MyApp_redis_1 redis-cli ping
PONG
但是,当我尝试从Web应用程序容器内对Redis服务器执行ping操作时,我什至无法使用redis-cli。我在Web容器中运行了pip freeze
,并确认已安装redis==3.2.1
。不过,我仍然收到以下错误消息
docker exec -it MyApp_web_1 redis-cli ping
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"redis-cli\": executable file not found in $PATH": unknown
当我尝试从Web应用程序容器中的外壳程序使用redis-cli
时,也会收到错误消息:
/usr/src/app/MyApp$ redis-cli ping
bash: redis-cli: command not found
为什么我不能在已安装Redis的Docker容器中使用redis-cli?
这是我的docker-compose.yml
文件的摘录:
version: "3"
services:
redis:
restart: always
image: redis:5.0.5
command: ["redis-server", "--appendonly", "yes"]
hostname: redis
web:
restart: always
build:
context: .
args:
- DOCKER_BUILD_ENV
dockerfile: ./dockerfiles/web/Dockerfile
environment:
****variables that I won't put on StackOverflow****
volumes:
- ./MyApp/:/usr/src/app/MyApp/:z
links:
- postgres:postgres
- redis:redis
expose:
- "3000"
command: scripts/entrypoint.sh
ports:
- "3000:3000"
感谢您的阅读! (如果需要,我也可以共享我的Dockerfile。)