Docker compose 和 docker-entrypoint

标签 docker docker-compose

运行 docker-compose up --build 时,我总是遇到此错误消息。有人知道我对 docker-entrypoint 文件做错了什么吗?

ERROR: for 986991ccdfe1_ubercoach_web_1  Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./docker-entrypoint.sh\": permission denied": unknown

ERROR: for web  Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./docker-entrypoint.sh\": permission denied": unknown
ERROR: Encountered errors while bringing up the project.

docker-compose:

version: '3'

services:
  db:
    image: postgres
    ports:
      - "5432:5432"
  web:
    build: .
    entrypoint: ./docker-entrypoint.sh
    env_file: .env
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Dockerfile:

# 拉取基础镜像 来自Python:3

# Set environment varibles
ENV PYTHONUNBUFFERED 1

# Set work directory
RUN mkdir /code
WORKDIR /code

# Install dependencies
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /code/Pipfile
RUN pipenv install --deploy --system --skip-lock --dev

# Copy project
COPY . /code/

docker-entrypoint.sh

#!/bin/bash

# Collect static files
echo "Collect static files"
python manage.py collectstatic --noinput

# Apply database migrations
echo "Apply database migrations"
python manage.py migrate

# Start server
echo "Starting server"
python manage.py runserver 0.0.0.0:8000

最佳答案

\"./docker-entrypoint.sh\": permission denied": unknown

我猜你的docker-entrypoint.sh没有执行权限(x)。但 docker-compose.yml 也并不是 docker-entrypoint.sh 的最佳位置。这是覆盖设置,请参阅 entrypoint 。默认值应位于 Dockerfile 中。试试这个:

将其添加到 Dockerfile 的末尾

COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh 应与 Dockerfile 位于同一文件夹中(或调整 COPY 路径)。从 docker-compose.yml 中删除 entrypoint 行。重建,重新运行。

关于Docker compose 和 docker-entrypoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52942913/

相关文章:

docker - 如何使用 Docker 将变量作为属性传递给 Wildfly 中的 xml 配置文件

ubuntu - 存储在 ubuntu 16.04 xenial xerus 上的 docker 守护进程日志在哪里?

mysql - mbind : Operation not permitted when connecting with sequel pro

docker - Docker守护程序和客户端/CLI在单独的盒子中的场景?

docker - 使用 docker-compose 设置 Kafka

docker - Docker:容器是否从Docker主机继承/etc/hosts?

scala - AWS EB部署-我的应用程序在哪里?

docker - DSpace 社区正式认可哪个 DSpace Docker 容器?

docker - docker-compose up with error “Couldn' t connect to Docker”

docker - 在 docker-compose.yml 中设置本地网络 IP 占位符