docker-compose up-使用云docker-machine构建变得非常缓慢

时间:2018-10-29 18:15:01

标签: docker docker-compose digital-ocean docker-machine

docker-compose up --build使用云docker-machine时构建速度非常慢,一小时后,我遇到了一个找不到entrypoint.sh文件的错误。

在本地Mac docker计算机上,相同的配置可以正常工作。

我的docker文件

FROM python:3.5.2
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD app/ /code/
ADD static/ /code/
ADD entrypoint.sh /code/

我的码头工人组成

version: '3.7'
services:
  web:
    build: .
    command: gunicorn --bind 0.0.0.0:8000 app.wsgi
    volumes:
      - .:/code
    entrypoint: ./entrypoint.sh
    expose:
      - "80"
  nginx:
    image: nginx:1.15.5
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./static:/static
    depends_on:
      - web

我运行的命令

cd myprojectfolder
eval $(docker-machine env [my-cloud-machine-name])
docker-compose -f docker-compose.yml -f envs/prd/prd.yml up --build -d

一个小时后出现错误(我的项目文件只有40mb)
错误:对于Web无法启动服务Web:OCI运行时创建失败:container_linux.go:348:启动容器进程导致“ exec:\”。/entrypoint.sh \”:stat ./entrypoint.sh:无此类文件或目录” :未知 错误:compose.cli.main.main:启动项目时遇到错误。
请帮我 谢谢

我已根据建议对此配置进行了更改,但没有任何更改。我一直坚持下去:

docker.api.build._set_auth_headers:发送身份验证配置()

这是我的新配置

泊坞窗撰写

version: '3.7'

services:
  web:
    command: gunicorn --bind 0.0.0.0:8000 app.wsgi
    entrypoint: ./entrypoint.sh
    expose:
      - "80"

  nginx:
    image: nginx:1.15.5
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./static:/static
    depends_on:
      - web

我的prd.yml文件

version: '3.7'

services:
  web:
    build:
      context: .
      dockerfile: ./envs/prd/Dockerfile

  nginx:
    volumes:
      - ./envs/prd/nginx/nginx.conf /etc/nginx/nginx.conf

我的prd dockerfile

FROM python:3.5.2
ENV PYTHONUNBUFFERED 1
WORKDIR /
ADD requirements.txt .
RUN pip install -r requirements.txt
ADD app/ ./app
ADD static/ ./static
ADD envs/prd/settings.py /app/settings.py
ADD entrypoint.sh .

我的.dockerignore

.DS_Store
.dockerignore
.git/
.gitignore
README.rst
README.md
*.pyc
__pycache__
.idea/*

1 个答案:

答案 0 :(得分:0)

从docker-compose中删除卷声明,并在构建阶段(在Dockerfile中)复制所有相关文件。例如,在您的web服务中,删除volumes: .:/code并将COPY * /code添加到其Dockerfile中。