使用dockerfile操作mkdir命令
我无法在具有dockerfile的容器中使用mkdir命令创建目录 我的Dockerfile文件很简单使用dockerfile操作mkdir命令,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我无法在具有dockerfile的容器中使用mkdir命令创建目录 我的Dockerfile文件很简单 FROM php:fpm WORKDIR /var/www/html VOLUME ./code:/var/www/html RUN mkdir -p /var/www/html/foo 通过这种方式,我创建了一个简单的php:fpm容器。 我写了一个名为foo的目录 docker build -t phpx . 我已经用上面的代码构建了 在我的docker中,按如下方式编写文件 v
FROM php:fpm
WORKDIR /var/www/html
VOLUME ./code:/var/www/html
RUN mkdir -p /var/www/html/foo
通过这种方式,我创建了一个简单的php:fpm容器。
我写了一个名为foo的目录
docker build -t phpx .
我已经用上面的代码构建了
在我的docker中,按如下方式编写文件
version: '3'
services:
web:
container_name: phpx
build : .
ports:
- "80:80"
volumes:
- ./code:/var/www/html
后来;运行下面的代码,我输入了容器内核
docker exec -it phpx /bin/bash
但是/var/www/html中没有名为foo的目录。
我不知道我哪里做错了。
您能帮助我吗?原因是您正在将一个卷从主机装载到
/var/www/html
。
逐步:
runmkdir-p/var/www/html/foo
在容器的文件系统中创建foo目录/code:/var/www/html
将容器文件系统中的/var/www/html
内容“隐藏”在主机文件系统上的/code
内容后面/var/www/html
时,您会看到主机上/code
目录的内容
修复:在启动容器之前,从docker-compose.yml中删除卷,或者在主机上创建foo
-目录
附加备注:在Docker文件中,您将一个卷声明为volume./code:/var/www/html
。这不起作用,您可能应该删除它。在Dockerfile中,不能在主机上指定路径
引述自:
主机目录在容器运行时声明:主机目录(挂载点)本质上依赖于主机。这是为了保持图像的可移植性。因为不能保证给定的主机目录在所有主机上都可用。因此,无法从Dockerfile中装载主机目录卷指令不支持指定主机目录参数。创建或运行容器时必须指定装入点
那么我该怎么做呢?我不想从docker compose文件中删除“volumes”参数。