当前位置: 首页 > 知识库问答 >
问题:

如何传递当前文件夹作为上下文docker-compose.yml然后Dockerfile?

冯宏浚
2023-03-14

我有一个中央文件。它位于~/base/Dockerfile中。假设它只构建了一个简单的debian图像。

FROM debian
COPY test.js .

我还有一个中心的docker compose。yml使用此Dockerfile的文件。它位于~/base/docker compose。yml

version: "3.9"
services: 
  test:
    build: ~/base/Dockerfile
    ports:
      - "5000:5000"

我还有一个bash文件,它调用这个docker compose。yml来自另一个目录。例如:

mkdir temp
cd temp
setup

安装程序是在/etc/bash.bashrc中注册为全局别名的bash文件。

它包含以下几行:

docker-compose -f ~/base/docker-compose.yml build
docker-compose up -d
docker-compose logs --f test

我可以在任何文件夹中运行setup,它应该基于debian图像构建一个容器。的确如此。

然而,它告诉我容器的名称是base_test_1,这是docker的默认约定。

这表明它使用了~/base/ 作为上下文。

如何将当前目录作为上下文传递?


共有1个答案

桑坚
2023-03-14

在同一位置创建了docker-compose.yml。添加了上下文,使用的值是环境变量。

~/base$ cat docker-compose.yml
version: "2.2"
services:
  test:
    build:
      context: ${contextdir}
      dockerfile: /home/myname/base/Dockerfile
    ports:
      - "5000:5000"

~/base$ cat Dockerfile
FROM python:3.6-alpine

COPY testfile.js .


在触发docker compose之前。yml build命令,导出当前工作目录。

~/somehere$ ls
testfile.js


~/somehere$ export contextdir=$(pwd)

~/somehere$ docker-compose -f ~/base/docker-compose.yml build
Building test
Step 1/2 : FROM python:3.6-alpine
 ---> 815c1103df84
Step 2/2 : COPY testfile.js .
 ---> Using cache
 ---> d0cc03f02bdf
Successfully built d0cc03f02bdf
Successfully tagged base_test:latest

我的复合文件和dockerfile位于~/base/,而testfile.js位于~/某处/(我假设为当前工作目录)

 类似资料:
  • 问题内容: 我有几个docker- compose.yml文件,我希望将它们与同一个Dockerfile一起使用,但略有不同。因此,我想将参数传递给该Dockerfile,以便根据变量设置为什么值来做一些稍有不同的操作。 到目前为止我尝试过的 docker-compose-A.yml文件 docker-compose-B.yml文件 我有一个要在其中使用SOMETHING的dockerfile。

  • 问题内容: 我试图编写一个程序来通过args读取文本文件,但是当我运行它时,它总是说找不到该文件,即使我将其放置在与我正在运行的main.java相同的文件夹中。有谁知道我的问题的解决方案或更好的阅读文本文件的方法? 问题答案: 请勿在中使用相对路径。 它将变成相对于当前工作目录的,这取决于您如何运行应用程序,而该方法又是无法从应用程序内部进行控制的。这只会导致可移植性麻烦。如果从Eclipse内

  • 本文向大家介绍python如何获取当前文件夹下所有文件名详解,包括了python如何获取当前文件夹下所有文件名详解的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于python获取当前文件夹下所有文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 os 模块下有两个函数: os.walk() os.listdir() 示例代码: 总结 以上就是这

  • 问题内容: 我正在尝试使用命令行ftp客户端通过ftp文件夹,但是到目前为止,我只能使用’get’来获取单个文件。 问题答案: 您可以依靠通常可以正常处理ftp的wget(至少以我自己的经验)。例如: 您也可以使用适合镜像的。目前等同于。 如果凭据详细信息中包含一些特殊字符,则可以指定和参数以使其生效。具有特定字符的自定义登录的示例: 编辑 @asmaier指出,请注意,即使要进行递归,它的默认最

  • 本文向大家介绍linux下上传下载文件夹的方法,包括了linux下上传下载文件夹的方法的使用技巧和注意事项,需要的朋友参考一下 Linux下目录复制:本机->远程服务器 test1为源目录,test2为目标目录,zhidao@192.168.0.1为远程服务器的用户名和ip地址。 Linux下目录复制:远程服务器->本机 zhidao@192.168.0.1为远程服务器的用户名和ip地址,test

  • 问题内容: 我要完成的工作是从分支中签出代码,将其合并到分支,构建,运行测试,如果测试成功则推送到分支。 测试应在需要的单独工作中运行。 我当前的设置如下: Job 从中检出,将其合并并构建 作业会在“ 后期制作”步骤中 触发作业(需要预先创建) 如果成功,则在 发布构建操作中推送到分支 __ 我尝试使用 Copy Artifact Plugin, 但是问题在于,在 Post构建步骤中 触发时,我