我试图Dockerfile建立另一个本地的.
$ ls -lR
total 0
-rw-r--r-- 1 me me 42 14 avr 10:42 Dockerfile
drwxr-xr-x 3 me me 42 14 avr 10:42 prod
./prod:
total 0
-rw-r--r-- 1 me me 42 14 avr 10:42 Dockerfile
$ cat prod/Dockerfile
FROM ../Dockerfile
...
$ docker build - < prod/Dockerfile
Run Code Online (Sandbox Code Playgroud)
无法处理Dockerfile:无法解析存储库信息:存储库名称组件必须匹配"a-z0-9 (?:[._] a-z0-9)*"
我知道FROM期待图像而不是路径.
如何延长Dockerfile从prod/Dockerfile?
tha*_*tah 14
Dockerfiles不会扩展Dockerfiles而是扩展图像,该FROM行不是"include"语句.
因此,如果要"扩展"另一个Dockerfile,则需要将原始Dockerfile构建为图像,并扩展该图像.
例如;
Dockerfile1:
FROM alpine
RUN echo "foo" > /bar
Run Code Online (Sandbox Code Playgroud)
Dockerfile2:
FROM myimage
RUN echo "bar" > /baz
Run Code Online (Sandbox Code Playgroud)
构建第一个Dockerfile(因为它被调用Dockerfile1,使用-f选项作为docker默认来查找一个名为的文件Dockerfile),并将其"标记"为myimage
docker build -f Dockerfile1 -t myimage .
# Sending build context to Docker daemon 3.072 kB
# Step 1 : FROM alpine
# ---> d7a513a663c1
# Step 2 : RUN echo "foo" > /bar
# ---> Running in d3a3e5a18594
# ---> a42129418da3
# Removing intermediate container d3a3e5a18594
# Successfully built a42129418da3
Run Code Online (Sandbox Code Playgroud)
然后构建第二个Dockerfile,它扩展您刚刚构建的图像.我们将生成的图像标记为"myextendedimage";
docker build -f Dockerfile2 -t myextendedimage .
# Sending build context to Docker daemon 3.072 kB
# Step 1 : FROM myimage
# ---> a42129418da3
# Step 2 : RUN echo "bar" > /baz
# ---> Running in 609ae35fe135
# ---> 4ea44560d4b7
# Removing intermediate container 609ae35fe135
# Successfully built 4ea44560d4b7
Run Code Online (Sandbox Code Playgroud)
要检查结果,请从映像运行容器并验证两个文件(/bar和/baz)是否在映像中;
docker run -it --rm myextendedimage sh -c "ls -la ba*"
# -rw-r--r-- 1 root root 4 Apr 14 10:18 bar
# -rw-r--r-- 1 root root 4 Apr 14 10:19 baz
Run Code Online (Sandbox Code Playgroud)
如果您使用 Docker 20.10+,您可以执行以下操作:
# syntax = edrevo/dockerfile-plus
INCLUDE+ ../Dockerfile
RUN ...
Run Code Online (Sandbox Code Playgroud)
该INCLUDE+指令由 Dockerfile 中的第一行导入。您可以在https://github.com/edrevo/dockerfile-plus阅读有关 dockerfile-plus 的更多信息
| 归档时间: |
|
| 查看次数: |
12940 次 |
| 最近记录: |