WSL2 docker-compose - 无法准备上下文

Vác*_*ček 3 php docker docker-compose windows-subsystem-for-linux wsl-2

我正在使用在 WSL2 上运行的 Docker 引擎,该引擎在 Windows 10 计算机上运行。我的目标是使用 Docker-compose 创建一个使用该php:fpm映像的服务并mysqli为其安装扩展。这是我的docker-compose.yaml

version: "3"

services:
  nginx:
    image: "nginx"
    restart: 'always'
    ports:
      - '3030:80'
    volumes:
      - ./src:/src
      - ./config/site.conf:/etc/nginx/conf.d/default.conf
    networks:
        - code-network
  php:
    build:
      context: .
      dockerfile: Dockerfile
    image: php:fpm
    volumes:
        - ./src:/src
    networks:
        - code-network
  mariadb:
    image: "mariadb:10.3.24"
    restart: 'always'
    volumes:
      - "/var/lib/mysql/data:/data"
      - "/var/lib/mysql/logs:/logs"
      - /var/docker/mariadb/conf:/etc/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "T05CNCitk2020@"
      MYSQL_USER: "user"
      MYSQL_PASSWORD: "Heslo123"
    networks:
        - code-network

networks:
    code-network:
        driver: bridge
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile:

FROM php:fpm

RUN docker-php-ext-install mysqli
Run Code Online (Sandbox Code Playgroud)

docker-compose up --build当我运行强制容器重建的命令时。我遇到了以下问题:

Building php
unable to prepare context: path "\\\\?\\\\\\wsl$\\Ubuntu-20.04\\home\\vendasky\\Projects\\sql-gui" not found
ERROR: Service 'php' failed to build : Build failed
Run Code Online (Sandbox Code Playgroud)

我不明白为什么当所有文件都位于 Linux 子系统中时路径应该是错误的。任何提示,如何解决这个问题?

小智 7

你是用 Windows 的 docker 桌面运行这个吗?

如果是这种情况,请尝试在实验设置下启用 Docker Compose V2 选项。这应该可以解决你的问题。