macos 环境dockerfile文件中不管执行什么run命令都报 error while loading init: no such file or directory错误问题解决

背景:macos环境下用Docker Desktop来启动docker时,在使用docker compose对容器进行编排时运行dockerfile 文件中的RUN命令时出现了,"error while loading init: no such file or directory"错误

代码如下:

app.py

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)


@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)


if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

Dockerfile

FROM python:3.6-alpine
ADD . /code
WORKDIR /code
COPY . .
RUN pip install redis flask
CMD ["python", "app.py"]

Docker-compose.yaml

version: '3'
services:

  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5001:5000"

  redis:
    image: "redis:alpine"

排查思路:

1、查看本地docker compose 命令是否有效

2、查看容器中是否存在pip命令

通过docker run -it --rm python:3.6-alpine sh命令进入进行排查

通过以上排查都没发现问题,最后发现docker compose up命令执行docker-compose.yaml文件时启动的是/usr/local/bin目录下的docker命令

解决办法:

Docker Desktop是默认把Docker CLI工具安装在$HOME/.docker/bin.目录,我们只需要把它改成安装在/usr/local/bin下 并且在.zshrc文件中添加环境变量即可

macos 环境dockerfile文件中不管执行什么run命令都报 error while loading init: no such file or directory错误问题解决_第1张图片

export PATH="/usr/local/bin:$PATH"```
source .zshrc

你可能感兴趣的:(docker)