Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Docker compose在windows中构建花费的时间太长?_Docker - Fatal编程技术网

为什么Docker compose在windows中构建花费的时间太长?

为什么Docker compose在windows中构建花费的时间太长?,docker,Docker,为什么docker compose需要花费太长时间才能开始构建图像? Docker等待约10分钟,直到它开始。我的图像中没有节点模块或大文件 我的网络不慢 我没有防病毒或防火墙 当我添加verbose标志时,我可以看到日志: $docker-compose --verbose -f .docker/docker-compose.my.yml build compose.config.config.find: Using configuration files: .\.docker/dock

为什么docker compose需要花费太长时间才能开始构建图像? Docker等待约10分钟,直到它开始。我的图像中没有节点模块或大文件

  • 我的网络不慢
  • 我没有防病毒或防火墙
当我添加
verbose
标志时,我可以看到日志:

$docker-compose --verbose -f .docker/docker-compose.my.yml build

compose.config.config.find: Using configuration files: .\.docker/docker-compose.my.yml
docker.utils.config.find_config_file: Trying paths: ['C:\\Users\\user\\.docker\\config.json', 'C:\\Users\\user\\.dockercfg']
docker.utils.config.find_config_file: Found file at path: C:\Users\user\.docker\config.json
docker.auth.load_config: Found 'auths' section
docker.auth.parse_auth: Auth data for 00000.dkr.ecr.us-east-2.amazonaws.com is absent. Client might be using a credentials store instead.
docker.auth.parse_auth: Auth data for https://index.docker.io/v1/ is absent. Client might be using a credentials store instead.
docker.auth.load_config: Found 'credsStore' section
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/version HTTP/1.1" 200 560
compose.cli.command.get_client: docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018
compose.cli.command.get_client: Docker base_url: http+docker://localnpipe
compose.cli.command.get_client: Docker version: Platform={'Name': 'Docker Engine - Community'}, Components=[{'Name': 'Engine', 'Version': '18.09.1', 'Details': {'ApiVersion': '1.39', 'Arch': 'amd64', 'BuildTime': '2019-01-09T19:41:49.000000000+00:00', 'Experimental': 'false', 'GitCommit': '4c52b90', 'GoVersion': 'go1.10.6', 'KernelVersion': '4.9.125-linuxkit', 'MinAPIVersion': '1.12', 'Os': 'linux'}}], Version=18.09.1, ApiVersion=1.39, MinAPIVersion=1.12, GitCommit=4c52b90, GoVersion=go1.10.6, Os=linux, Arch=amd64, KernelVersion=4.9.125-linuxkit, BuildTime=2019-01-09T19:41:49.000000000+00:00
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('docker_default')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/networks/docker_default HTTP/1.1" 404 47
compose.service.build: Building app-www
compose.cli.verbose_proxy.proxy_callable: docker build <- (path='\\\\?\\C:\\myapp', tag='docker_app-www', rm=True, forcerm=False, pull=False, nocache=False, dockerfile='./.docker/Dockerfile-app-www', cache_from=None, labels=None, buildargs={}, network_mode=None, target=None, shmsize=None, extra_hosts=None, container_limits={'memory': None}, gzip=False, isolation=None, platform=None)
.docker/Dockerfile应用程序www

FROM node:latest

WORKDIR /usr/src/app

COPY ./dist/myapp .

RUN npm install

EXPOSE 3000

CMD [ "npm", "start" ]

它可能是构建上下文,正如文档中所述,它被发送到docker守护进程,最终可能会成为一个大的传输。 来自文档(我的)

如果提供的值是相对路径,则会将其解释为相对于撰写文件的位置此目录也是发送到Docker守护程序的生成上下文


判断的方法是指向一个没有任何内容的文件夹和一个简化的Dockerfile,看看它是否启动得更快。

你能让一个小docker创建一个由公共图像或你可以共享的Dockerfile组成的、你可以在这里公开的Dockerfile吗?这将大大帮助任何人了解这一点,否则人们只能猜测你的网络速度慢、windows文件系统不好、或者它陷入了防病毒等。更新了我的问题:)我认为问题在于“上下文:../”。这意味着将完整的父文件夹(docker-compose.yaml所在的位置)发送到docker守护程序。它有多大?里面有多少文件?是的,很有用。但现在我需要将输出目录从dist更改为.docker/app文件夹,或者只复制文件。因为我得到错误:
生成失败:复制失败:生成上下文之外的禁止路径:
您确实需要dockerfile使用的所有内容都可以从生成上下文访问。在您的情况下,请确保
dist/myapp
中的内容在上下文中,而不是其他内容。保持快速的关键是使上下文尽可能小。
FROM node:latest

WORKDIR /usr/src/app

COPY ./dist/myapp .

RUN npm install

EXPOSE 3000

CMD [ "npm", "start" ]