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,我将构建并复制它们,但这是另一天的问题。