簡體   English   中英

Docker compose 在構建過程中拋出錯誤:服務 'postgres' 無法構建:exec:\\"/bin/sh\\":stat /bin/sh:沒有這樣的文件或目錄":未知

[英]Docker compose throws error during build: Service 'postgres' failed to build: exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown

在此處輸入圖片說明 我拉了一個新的 cookiecutter django 模板,我想使用 docker。 當我執行docker-compose -f local.yml build我收到此錯誤:

服務“postgres”無法構建:OCI 運行時創建失敗:container_linux.go:346:啟動容器進程導致“exec:\\”/bin/sh\\”:stat /bin/sh:沒有這樣的文件或目錄”:未知

研究這個問題我發現它可能是損壞的圖像。 因此,我刪除了所有容器、圖像並使用以下命令修剪了系統:

docker rm -vf $(docker ps -a -q)
docker rmi -f $(docker images -a -q)
docker system prune

然后我也做了:

docker-compose -f local.yml down
docker-compose -f local.yml up

我重新啟動了docker,重新啟動了我的電腦......

當我列出所有容器和圖像時,它們都消失了。 然后我再次構建它,這讓我感到困惑,因為我得到:

fc7181108d40: Already exists
81cfa12d39e9: Already exists
793d305ca761: Already exists
41e3ced3a2aa: Already exists
a300bc9d5405: Already exists
3c6a5c3830ed: Already exists
fb8c79b24338: Already exists
fcda1144379f: Already exists
476a22a819cc: Downloading [===============>                                   ]  25.23MB/82.14MB
78b36b49bb24: Download complete
6a096a28591f: Download complete
c0cb89b5217b: Download complete
778f1469a309: Download complete
7c4413fcad87: Download complete

那么還有什么東西存在嗎? 我假設某些東西沒有被刪除。 然后一切都失敗了:

ERROR: Service 'postgres' failed to build: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \\"/bin/sh\\": stat /bin/sh: no such file or directory": unknown

所以我想我的 postgres 圖像有問題......我只是不知道還能嘗試什么。 我有另一個項目,它與 docker 和 cookiecutter 完美配合。 因此,我認為重新安裝 docker 不會有幫助。

關於我還可以嘗試什么的任何想法? 我不是 Docker 專家,這幾乎是我的故障排除知識的結束......非常感謝幫助,謝謝!

以下是自動創建cookiecutter:

編寫文件:

version: '3'

volumes:
  local_postgres_data: {}
  local_postgres_data_backups: {}

services:
  django:
    build:
      context: .
      dockerfile: ./compose/local/django/Dockerfile
    image: nginx_local_django
    depends_on:
      - postgres
    volumes:
      - .:/app
    env_file:
      - ./.envs/.local/.django
      - ./.envs/.local/.postgres
    ports:
      - "8000:8000"
    command: /start

  postgres:
    build:
      context: .
      dockerfile: ./compose/production/postgres/Dockerfile
    image: nginx_production_postgres
    volumes:
      - local_postgres_data:/var/lib/postgresql/data
      - local_postgres_data_backups:/backups
    env_file:
      - ./.envs/.local/.postgres

Dockerfile:

FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk update \
  # psycopg2 dependencies
  && apk add --virtual build-deps gcc python3-dev musl-dev \
  && apk add postgresql-dev \
  # Pillow dependencies
  && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
  # CFFI dependencies
  && apk add libffi-dev py-cffi \
  # Translations dependencies
  && apk add gettext \
  # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
  && apk add postgresql-client

# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt

COPY ./compose/production/django/entrypoint /entrypoint
RUN sed -i 's/\r$//g' /entrypoint
RUN chmod +x /entrypoint

COPY ./compose/local/django/start /start
RUN sed -i 's/\r$//g' /start
RUN chmod +x /start

WORKDIR /app

ENTRYPOINT ["/entrypoint"]



我的 postgres dockerfile

FROM postgres:11.3

COPY ./compose/production/postgres/maintenance /usr/local/bin/maintenance
RUN chmod +x /usr/local/bin/maintenance/*
RUN mv /usr/local/bin/maintenance/* /usr/local/bin \
    && rmdir /usr/local/bin/maintenance


如果您使用其他一些 Linux 發行版,請嘗試將此添加到您的 postgres Dockerfile 更改 apk

RUN apk add --no-cache dos2unix
RUN dos2unix YOUR_SCRIPT_NAME
RUN chmod +x YOUR_SCRIPT_NAME

並確保第一行是#!/bin/sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM