Docker 远程服务器上的上下文“来自守护程序的错误响应:无效的卷规范”
Docker context on remote server “Error response from daemon: invalid volume specification”
我正在使用 docker 上下文将我的本地容器部署到我的 debian 网络服务器。我在 Windows 10 上为 Windows 使用 Docker 桌面。该应用程序是使用 Flask 编写的。
在某些时候,我在“docker context use remote”之后尝试“docker-compose up --build”,但出现以下错误:
来自守护程序的错误响应:无效的卷规范:'C:\Users\user\fin:/fin:rw'
当我尝试将其部署到生产服务器时,本地一切正常,但弹出错误。
Docker文件如下所示:
FROM python:3.8-slim-buster
ENV INSTALL_PATH /app
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
ENV PATH="/home/user/.local/bin:${PATH}"
COPY . ./
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH
USER user
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN pip install --upgrade pip
CMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
docker-compose.yml 的摘录如下所示:
version: '3.8'
services:
flask-app:
container_name: flask-app
restart: always
build: .
command: >
gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
environment:
PYTHONUNBUFFERED: 'true'
volumes:
- '.:/fin'
ports:
- 8000:8000
env_file:
- '.env'
在 .env 文件中的选项
COMPOSE_CONVERT_WINDOWS_PATHS=1 已设置。
在某些时候,我使用安装了 Ubuntu 的 WSL2 尝试了相同的过程,这导致了以下消息:
Error 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
根据此消息,我将 Docker 文件更改为:
FROM python:3.8-slim-buster
ENV INSTALL_PATH=/usr/src/app
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
ENV PATH=/home/user/.local/bin:${PATH}
COPY . /usr/src/app/
# set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
#ENV COMPOSE_CONVERT_WINDOWS_PATHS=1
RUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH
USER user
COPY requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt
RUN pip install --upgrade pip
CMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
但是还是报错,我得想办法解决了。
预先感谢您的帮助。
您的卷规格无效:生产环境中的“C:\Users\user\fin:/fin:rw
”是因为主机路径 C:\Users\user\fin
不可用。您可以在部署时将其删除或将其更改为生产环境中可用的绝对路径,如下所示。
volumes:
- '/root:/fin:rw'
其中 /root 是我的生产环境中可用的目录。
/path:/path/in/container mounts the host directory, /path at the /path/in/container
path:/path/in/container creates a volume named path with no relationship to the host.
注意开头的斜杠。如果 /
存在,它将被视为主机目录,否则将被视为卷
使用这个(没有引号和斜杠,所以它知道你指的是这个文件夹):
volumes:
- ./:/fin
我正在使用 docker 上下文将我的本地容器部署到我的 debian 网络服务器。我在 Windows 10 上为 Windows 使用 Docker 桌面。该应用程序是使用 Flask 编写的。
在某些时候,我在“docker context use remote”之后尝试“docker-compose up --build”,但出现以下错误:
来自守护程序的错误响应:无效的卷规范:'C:\Users\user\fin:/fin:rw'
当我尝试将其部署到生产服务器时,本地一切正常,但弹出错误。
Docker文件如下所示:
FROM python:3.8-slim-buster
ENV INSTALL_PATH /app
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
ENV PATH="/home/user/.local/bin:${PATH}"
COPY . ./
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH
USER user
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN pip install --upgrade pip
CMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
docker-compose.yml 的摘录如下所示:
version: '3.8'
services:
flask-app:
container_name: flask-app
restart: always
build: .
command: >
gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
environment:
PYTHONUNBUFFERED: 'true'
volumes:
- '.:/fin'
ports:
- 8000:8000
env_file:
- '.env'
在 .env 文件中的选项 COMPOSE_CONVERT_WINDOWS_PATHS=1 已设置。
在某些时候,我使用安装了 Ubuntu 的 WSL2 尝试了相同的过程,这导致了以下消息:
Error 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
根据此消息,我将 Docker 文件更改为:
FROM python:3.8-slim-buster
ENV INSTALL_PATH=/usr/src/app
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
ENV PATH=/home/user/.local/bin:${PATH}
COPY . /usr/src/app/
# set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
#ENV COMPOSE_CONVERT_WINDOWS_PATHS=1
RUN useradd -ms /bin/bash user && chown -R user $INSTALL_PATH
USER user
COPY requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt
RUN pip install --upgrade pip
CMD gunicorn -c "python:config.gunicorn" "fin.app:create_app()"
但是还是报错,我得想办法解决了。
预先感谢您的帮助。
您的卷规格无效:生产环境中的“C:\Users\user\fin:/fin:rw
”是因为主机路径 C:\Users\user\fin
不可用。您可以在部署时将其删除或将其更改为生产环境中可用的绝对路径,如下所示。
volumes:
- '/root:/fin:rw'
其中 /root 是我的生产环境中可用的目录。
/path:/path/in/container mounts the host directory, /path at the /path/in/container
path:/path/in/container creates a volume named path with no relationship to the host.
注意开头的斜杠。如果 /
存在,它将被视为主机目录,否则将被视为卷
使用这个(没有引号和斜杠,所以它知道你指的是这个文件夹):
volumes:
- ./:/fin