【发布时间】:2020-12-05 06:13:09
【问题描述】:
我正在尝试使用 docker-compose 安装一个卷,以便在开发时可以热重载一些 C 代码。我之前使用过 Docker 几次,并且在处理 nodejs 网站时专门遇到了这个用例,但我在这里完全不知所措。
我的docker-compose.yml 和Dockerfile 已被完全剥离到最低限度。我想将当前目录(所有源代码)挂载到容器中。我的Dockerfile 只是安装了一些依赖项,设置了工作目录,然后在我的docker-compose.yml 添加卷时尝试运行makefile。结果是一个容器无法访问已安装的卷和生成的代码(Makefile 没有任何问题,因为它在主机目录上工作并且在复制时,而不是使用卷)。有没有人发现这两个文件有什么问题?看来/cfs 文件夹甚至没有在容器中创建。我尝试将其挂载到主目录无济于事。
docker-compose.yml
version: '3'
services:
cfs:
volumes:
- ./:/cfs
build:
context: ./
dockerfile: ./Dockerfile
networks:
- default
networks:
default:
internal: true
Dockerfile
FROM ubuntu:20.04
# install dependencies
RUN apt-get -qy update \
&& apt-get -y install \
cmake=3.16.3-1ubuntu1 \
make=4.2.1-1.2 \
gcc=4:9.3.0-1ubuntu2 \
g++=4:9.3.0-1ubuntu2
WORKDIR /cfs
RUN make prep
RUN make
RUN make install
【问题讨论】:
-
看起来应该可以。作为分析此问题的第一步,您可能希望在卷定义中将 ./ 替换为 ${PWD} 以查看是否有所不同。在某些环境中 ./ 和 ${PWD} 返回不同的值。
标签: docker docker-compose dockerfile