Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:绑定装载下的卷?_Docker_Docker Compose - Fatal编程技术网

Docker:绑定装载下的卷?

Docker:绑定装载下的卷?,docker,docker-compose,Docker,Docker Compose,以下是我得到的: version: "3.7" services: php: build: context: . dockerfile: docker/php.docker links: - mariadb env_file: .env volumes: - type: volume source: webpack_assets target: /srv/myproject/.we

以下是我得到的:

version: "3.7"
services:
  php:
    build:
      context: .
      dockerfile: docker/php.docker
    links:
      - mariadb
    env_file: .env
    volumes:
      - type: volume
        source: webpack_assets
        target: /srv/myproject/.webpack
        read_only: true
      - type: volume
        target: /srv/myproject/storage
        consistency: delegated
      - type: tmpfs
        target: /srv/myproject/bootstrap/cache
        consistency: delegated
      - type: bind
        source: .
        target: /srv/myproject
        read_only: true
        consistency: cached
    working_dir: '/srv/myproject'
  webpack:
    image: node:lts
    ports:
      - '8081:8081'
    env_file: .env
    volumes:
      - type: volume
        source: webpack_assets
        target: /srv/myproject/.webpack
      - type: bind
        source: .
        target: /srv/myproject
        read_only: true
        consistency: cached
    working_dir: '/srv/myproject'
    command: sh -c 'yarn && exec node --max_old_space_size=8192 node_modules/.bin/webpack-dev-server'
volumes:
  webpack_assets:
webpack
需要对我的项目文件进行只读访问,它需要编写一个特殊的文件
webpack assets.json
,我已将其移动到
.webpack
目录下,因为我认为您无法装载单个文件

php
需要对此生成的文件进行只读访问。我本想把它做成一个
tmpfs
卷,但显然那些不能共享??主机系统不需要访问此文件

问题是,当我尝试以这种方式装载卷时,会出现此错误:

ERROR: for myproject_webpack_1  Cannot start service webpack: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/docker/volumes/myproject_webpack_assets/_data\\\" to rootfs \\\"/var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697c226dc1d1943762/merged\\\" at \\\"/var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697c226dc1d1943762/merged/srv/myproject/.webpack\\\" caused \\\"mkdir /var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697cRecreating myproject_php_1     ... error

ERROR: for myproject_php_1  Cannot start service php: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/docker/volumes/myproject_webpack_assets/_data\\\" to rootfs \\\"/var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged\\\" at \\\"/var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged/srv/myproject/.webpack\\\" caused \\\"mkdir /var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged/srv/myproject/.webpack: read-only file system\\\"\"": unknown

ERROR: for webpack  Cannot start service webpack: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/docker/volumes/myproject_webpack_assets/_data\\\" to rootfs \\\"/var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697c226dc1d1943762/merged\\\" at \\\"/var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697c226dc1d1943762/merged/srv/myproject/.webpack\\\" caused \\\"mkdir /var/lib/docker/overlay2/bc6896fa1823fbb96963b5afd02ac877b6210ed25712be697c226dc1d1943762/merged/srv/myproject/.webpack: read-only file system\\\"\"": unknown

ERROR: for php  Cannot start service php: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/docker/volumes/myproject_webpack_assets/_data\\\" to rootfs \\\"/var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged\\\" at \\\"/var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged/srv/myproject/.webpack\\\" caused \\\"mkdir /var/lib/docker/overlay2/ee4f18947f74ba66fa17775e1b32447e9536609ad527699f3de74ec101d32915/merged/srv/myproject/.webpack: read-only file system\\\"\"": unknown

如何让它工作?

如果我正在构建它,我会使用多阶段构建在编译时运行webpack,然后
将构建的Javascript构件复制到我的运行时映像中;我不会有一个只运行webpack的容器,也不会有这些卷的大部分。在您的环境中,是否可以删除所有只读卷,并让它们从Docker映像中运行代码?@DavidMaze我应该澄清一下,这是为了开发。对于prod,我将构建并复制它们,但这是另一天的问题。