jay*_*5on 5 relative-path docker dockerfile docker-compose devops
我正在使用 docker context 将本地容器部署到我的 debian Web 服务器。我在 Windows 10 上使用 Docker Desktop for Windows。该应用程序是使用 Flask 编写的。
\n在某些时候,我在 \xe2\x80\x9cdocker 上下文使用远程\xe2\x80\x9d 之后尝试了 \xe2\x80\x9cdocker-compose up --build\xe2\x80\x9d ,并且收到以下错误:
\n来自守护程序的错误响应:无效的卷规范:\xe2\x80\x98C:\\Users\\user\\fin:/fin:rw\xe2\x80\x99
\n当我尝试将其部署到生产服务器时,本地一切正常,但会弹出错误。
\nDockerfile 如下所示:
\nFROM python:3.8-slim-buster\n\nENV INSTALL_PATH /app\nRUN mkdir -p $INSTALL_PATH\nWORKDIR $INSTALL_PATH\n\nENV PATH="/home/user/.local/bin:${PATH}"\n\nCOPY . ./\n\n# set environment variables\nENV PYTHONDONTWRITEBYTECODE 1\nENV PYTHONUNBUFFERED 1\n\nRUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH\nUSER user\n\nCOPY requirements.txt requirements.txt\nRUN pip install -r requirements.txt\n\nRUN pip install --upgrade pip\n\nCMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"\nRun Code Online (Sandbox Code Playgroud)\ndocker-compose.yml 的摘录如下所示:
\nversion: '3.8'\n\nservices:\n flask-app:\n container_name: flask-app\n restart: always\n build: .\n command: >\n gunicorn -c "python:config.gunicorn" "fin.app:create_app()"\n environment:\n PYTHONUNBUFFERED: 'true'\n volumes:\n - '.:/fin'\n ports:\n - 8000:8000\n env_file:\n - '.env'\nRun Code Online (Sandbox Code Playgroud)\n在 .env 文件中设置选项\nCOMPOSE_CONVERT_WINDOWS_PATHS=1。
\n在某些时候,我在安装了 Ubuntu 的情况下使用 WSL2 尝试了相同的过程,这导致了以下消息:
\nError response from daemon: create \\\\wsl.localhost\\Ubuntu-20.04\\home\\user\\fin: "\\\\\\\\wsl.localhost\\\\Ubuntu-20.04\\\\home\\\\user\\\\fin" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path\nRun Code Online (Sandbox Code Playgroud)\n根据此消息,我将 Dockerfile 更改为:
\nFROM python:3.8-slim-buster\n\nENV INSTALL_PATH=/usr/src/app\nRUN mkdir -p $INSTALL_PATH\nWORKDIR $INSTALL_PATH\n\nENV PATH=/home/user/.local/bin:${PATH}\n\nCOPY . /usr/src/app/\n\n# set environment variables\nENV PYTHONDONTWRITEBYTECODE=1\nENV PYTHONUNBUFFERED=1\n#ENV COMPOSE_CONVERT_WINDOWS_PATHS=1\n\nRUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH\nUSER user\n\nCOPY requirements.txt /usr/src/app/requirements.txt\nRUN pip install -r requirements.txt\n\nRUN pip install --upgrade pip\n\nCMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"\nRun Code Online (Sandbox Code Playgroud)\n但错误仍然存在,我必须知道如何解决它。
\n预先感谢您的帮助。
\n您在生产环境中收到无效的卷规范: \xe2\x80\x98 C:\\Users\\user\\fin:/fin:rw\xe2\x80\x99 是因为主机路径C:\\Users\\user\\fin不可用。您可以在部署时将其删除,或将其更改为生产环境中可用的绝对路径,如下所示。
volumes:\n - '/root:/fin:rw'\nRun Code Online (Sandbox Code Playgroud)\n其中 /root 是我的生产环境中可用的目录。
\n /path:/path/in/container mounts the host directory, /path at the /path/in/container\n\n path:/path/in/container creates a volume named path with no relationship to the host.\nRun Code Online (Sandbox Code Playgroud)\n注意开头的斜杠。如果/存在,它将被视为主机目录,否则它将被视为卷
| 归档时间: |
|
| 查看次数: |
12673 次 |
| 最近记录: |