zoukankan      html  css  js  c++  java
  • 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文件夹

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

  • 相关阅读:
    Java Iterator模式
    .NET中的异常和异常处理
    .NET 中的DateTime
    .NET中的StringBuilder
    .NET中的计时器控件Timer
    .NET中的字符串你了解多少?
    必须会的SQL语句(八)数据库的完整性约束
    必须会的SQL语句(七)字符串函数、时间函数
    必须会的SQL语句(六)查询
    必须会的SQL语句(五)NULL数据处理和类型转换
  • 原文地址:https://www.cnblogs.com/wenqiangit/p/10289243.html
Copyright © 2011-2022 走看看