Ari*_*ong 5 docker-compose alpine-linux
这是基于https://testdriven.io/courses/microservices-with-docker-flask-and-react/
\n\n我正在运行一个指向entrypoint.sh 的docker 文件。
\n\n成功docker-compose-f docker-compose-dev.yml build run\n但正在运行docker-compose-f docker-compose-dev.yml up显示
ERROR: for users Cannot start service users: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \\"/usr/src/app/entrypoint.sh\\": permission denied": unknown\nERROR: Encountered errors while bringing up the project.\nRun Code Online (Sandbox Code Playgroud)\n\n我确实尝试使用docker run -it \xe2\x80\x93tty users_app:latest sh.\nRunning在交互模式下运行./entrypoint.sh运行确实有效。\n但它不适用于 docker-compose。
有人有同样的问题吗?
\n\n这是我的 docker-compose-dev.yml、Dockerfile-dev 和 entrypoint.sh
\n\ndocker-compose-dev.yml
\n\nversion: \'3.6\'\n\nservices:\n users:\n build:\n context: ./services/users\n dockerfile: Dockerfile-dev\n volumes:\n - \'./services/users:/usr/src/app\'\n ports:\n - 5001:5000\n environment:\n - FLASK_APP=project/__init__.py\n - FLASK_ENV=development\n - APP_SETTINGS=project.config.DevelopmentConfig\n - DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_dev\n - DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test \n depends_on:\n - users-db\n\n users-db: \n build:\n context: ./services/users/project/db\n dockerfile: Dockerfile\n ports:\n - 5435:5432\n environment:\n - POSTGRES_USER=postgres\n - POSTGRES_PASSWORD=postgres\nRun Code Online (Sandbox Code Playgroud)\n\nDockerfile-dev
\n\n# base image\nFROM python:3.6.5-alpine\n\n# install dependencies\nRUN apk update && \\\n apk add --virtual build-deps gcc python-dev musl-dev && \\\n apk add postgresql-dev && \\\n apk add netcat-openbsd\n\n# set working directory\nWORKDIR /usr/src/app\n\n# add and install requirements\nCOPY ./requirements.txt /usr/src/app/requirements.txt\nRUN pip install -r requirements.txt\n\n# add app\nCOPY . /usr/src/app\n\n# add entrypoint.sh\nCOPY ./entrypoint.sh /usr/src/app/entrypoint.sh\nRUN chmod +x /usr/src/app/entrypoint.sh\n\n# run server\n#USER root\n#RUN ["chmod", "+x", "/usr/src/app/entrypoint.sh"]\nCMD ["/usr/src/app/entrypoint.sh"]\nRun Code Online (Sandbox Code Playgroud)\n\n入口点.sh
\n\n#!/bin/sh\n\necho "Waiting for postgres..."\nwhile ! nc -z users-db 5432; do\n sleep 0.1\ndone\n\necho "PostgresSQL started"\n\npython manage.py run -h 0.0.0.0\nRun Code Online (Sandbox Code Playgroud)\n
Ari*_*ong 12
在源目录中运行chmod +x /usr/src/entrypoint.sh确实有效。
Docker 是它自己的系统文件,但它从源目录复制所有内容(包括权限)。
但是,我无法理解,为什么RUN chmod +x /usr/src/app/entrypoint.sh在 dockerfile 中运行不起作用
小智 7
entrypoint.sh检查主机的权限,因为它会将所有内容复制到容器中。
chmod +x ./entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
然后重建。
| 归档时间: |
|
| 查看次数: |
6495 次 |
| 最近记录: |