使用共享库文件构建Docker映像

时间:2020-07-08 11:52:18

标签: docker docker-compose dockerfile

这是我的文件结构:

-- Dir1
---- Dockerfile
---- index.php
-- Dir2
---- Dockerfile
---- index.php
-- SharedLibrary
---- class.php

我想用docker-compose构建多个图像,而且它们都需要另一个目录中的共享文件。

但是Dockerfile无法添加具有相对路径的文件。

通常要做什么来解决这个问题?

顺便说一句,它不仅可以在本地docker上运行,因此不应该与卷一起处理。


其他信息:

  • 我想创建一个shellscript,将所需文件复制到每个目录并运行docker-compose
  • 我只想知道如何优雅地解决此问题。

1 个答案:

答案 0 :(得分:1)

您将必须将Dockerfile移到根目录(在您的情况下,在SharedLibrary上方)。

Docker有一个叫做“ Build Context”的东西。通常是Dockerfile所在的目录。构建器只能访问该目录及其以下的文件,而不能访问该文件。

您可以创建两个Dockerfile,例如:

-<root>
-- Dir1
---- index.php
-- Dir2
---- index.php
-- SharedLibrary
---- class.php
-- Dockerfile.app1
-- Dockerfile.app1
-- docker-compose.yaml

然后是docker-compose.yaml中的specify those files


我个人会做不同的事情:将两者合并成multistage Dockerfile,并在target中指定一个docker-compose.yaml。您最终会得到类似的东西:

# docker-compose.yml
version: '3.8'
services:
  app1:
    build:
      context: .              # default
      dockerfile: Dockerfile  # default
      target: app1
  app2:
    build:
      context: .              # default
      dockerfile: Dockerfile  # default
      target: app2