docker+ bind mount 部署复杂flask应用

报错如下:

[root@test-wenqiang flask-skeleton]# docker run -d -p 80:5000 -v $(pwd):/skeleton --name flask zhaiwenqiang/flask-skeleton
9b705abd5e280723b8d271394769163224e3fcc052e7313637f42c5fec703e19
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: "scripts/dev.sh": permission denied".

原因:

  • 没有dev.sh的权限

解决方式:

需要在构建镜像的时候给文件添加权限(当然也可以构建好镜像然后修改镜像中的文件的权限,但这样做不优雅,作为用户来说只负责使用,并不负责修改镜像)

只贴出关键的两个步骤

1. Dockerfile

# Dockerfile中的注释跟python的单行注释一致
FROM python:2.7
LABEL maintainer="Peng Xiao<xiaoquwl@gmail.com>"
# 拷贝当前路径下的所有文件到镜像中的根路径下的/skeleton中
COPY . /skeleton 
# 指定image的工作路径,类似于cd到某文件夹中, 但是docker不建议使用cd
WORKDIR /skeleton
# 改变某个文件的执行权限,注意这里还要从根路径开始写(也就是绝对路径)
RUN chmod 777 /skeleton/scripts/dev.sh
RUN pip install -r requirements.txt
EXPOSE 5000
# entrypoint 跟 cmd还是有区别的,要不然发明俩干啥
# entrypoint 有两种语法一种是sh命令 一种是下面的方式
ENTRYPOINT ["scripts/dev.sh"]

2. 运行容器命令

docker run -d -p 80:5000 -v $(pwd):/skeleton --name flask zhaiwenqiang/flask-pro

-v $(pwd):/skeleton 关联当前文件夹与容器中的/skeleton文件夹

可以做到本地文件与容器中的文件关联,当修改了本地的文件,容器中的文件会修改,反之亦然,容器中的服务会实时监控到这个变化

转载于:https://www.cnblogs.com/wenqiangit/p/10289243.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值