Docker&Python,在Linux上拒绝权限,但在Windows上运行时有效

2024-05-16 07:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python+Flask和Postgre准备一个开发容器

因为它是一个开发容器,它意味着高效,所以我不想每次更改文件时都运行build,所以我不能在构建阶段COPY更改文件,而是装载一个包含所有源文件的卷,所以当我在主机中更改python文件时,Flask服务器将自动检测更改并重新启动自身,即使它位于容器中

到目前为止,运行docker-compose up很好,这些容器在Windows上运行良好,但当我尝试在Linux上运行时,我得到了:

/bin/sh: 1: ./start.sh: Permission denied

我搜索的每个地方都告诉我去RUN chmod +x start.sh,这不起作用,因为文件在构建阶段不存在,所以我尝试改为CMD,而不是RUN。。。但还是同样的错误

你知道为什么吗?难道容器不应该帮助“在我的机器上工作”吗?因为这些文件在Windows主机上工作,但在Linux主机上不工作

为了使主机上的文件更改反映在容器中(无构建),我所做的是正确的方法吗

提前谢谢

以下是我的档案:

docker-compose.yml

version: '3'

services:
    postgres-docker:
      image: postgres:9.6
      environment:
        POSTGRES_PASSWORD: "Postgres2019!"
      ports:
        - "9091:5432"
      expose:
        - "5432"
      volumes:
        - volpostgre:/var/lib/postgresql/data
      networks:
        - app-network

    rest-server:
      build:
        context: ./projeto
      ports:
        - "9092:5000"
      depends_on:
        - postgres-docker
      volumes:
        - ./projeto:/app
      networks:
        - app-network

volumes:
  volpostgre:

networks:
  app-network:
    driver: bridge

projeto文件夹中,我得到了以下Dockerfile

FROM python:3.8.5

WORKDIR /app

CMD ./start.sh

在{}中:

#!/bin/bash
pip install -r requirements.txt
python setupdatabase.py
python run.py

Tags: 文件composedockerbuildappflaskshpostgres
1条回答
网友
1楼 · 发布于 2024-05-16 07:07:43

您可以尝试的一个选项是在docker-compose.yml中重写CMD,首先设置文件权限,然后启动执行脚本

因此,通过这样做,您根本不需要构建docker映像,因为映像中的唯一内容就是设置CMD ./start.sh

webapp:
  image: python:3.8.5
  volumes:
    - $PWD/:/app
  working_dir: /app
  command: bash -c 'chmod +x start.sh && ./start.sh'

相关问题 更多 >