【问题标题】:docker-compose up --build becomes very slow using cloud docker-machinedocker-compose up --build 使用云 docker-machine 变得非常慢
【发布时间】:2018-10-29 18:15:01
【问题描述】:

docker-compose up --build 使用云 docker-machine 变得非常慢,一小时后我有一个找不到 entrypoint.sh 文件的错误。

在本地 Mac docker-machine 上,相同的配置工作正常。

我的 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/

我的 docker compose

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/*

【问题讨论】:

  • 您的卷正在安装在 docker 机器主机中。 volumes: - .:/code 您需要使用docker-machine mount 在 docker-machine 主机中挂载本地文件夹,或者在没有卷的情况下运行映像。
  • 谢谢,您能否更好地解释一下我需要如何更改 dockerfile 一个 docker compose 文件以便在没有卷的情况下使用?我是初学者对不起!谢谢你
  • 删除volumes: - .:/code
  • 很抱歉,没有任何改变。从 Web 容器中删除卷。当我运行时: docker-compose --verbose -f docker-compose.yml -f envs/prd/prd.yml up --build -d 我卡住了

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2021-08-06
    相关资源
    最近更新 更多