我正试图用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
您可以尝试的一个选项是在
docker-compose.yml
中重写CMD
,首先设置文件权限,然后启动执行脚本因此,通过这样做,您根本不需要构建docker映像,因为映像中的唯一内容就是设置
CMD ./start.sh
相关问题 更多 >
编程相关推荐