docker+ bind mount 部署复杂flask应用

报错如下:

[[email protected] 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<[email protected]>"
# 拷贝当前路径下的所有文件到镜像中的根路径下的/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

时间: 2024-11-07 23:44:32

docker+ bind mount 部署复杂flask应用的相关文章

Docker Bind Mount 与 Volume

为了防止docker里序列化数据的丢失,docker采用了挂载的方式 volume docker -v volumeName:containerPath 或者 docker -v containerPath 这种方式,linux中,docker会在/var/lib/docker/volumes下生成volumeName目录,将containerPath的目录挂载在/var/lib/docker/volumes/$volumeName/_data里 如果不指定volumeName,将随机生成一个文

Data Volume 之 bind mount - 每天5分钟玩转 Docker 容器技术(39)

storage driver 和 data volume 是容器存放数据的两种方式,上一节我们学习了 storage driver,本节开始讨论 Data Volume. Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中.Data Volume 有以下特点: Data Volume 是目录或文件,而非没有格式化的磁盘(块设备). 容器可以读写 volume 中的数据. volume 数据可以被永久的保存,即使使用它的容器

Docker的数据管理(volume/bind mount/tmpfs)

Docker提供了三种不同的方式用于将宿主的数据挂载到容器中:volumes,bind mounts,tmpfs volumes.当你不知道该选择哪种方式时,记住,volumes总是正确的选择. volumes是Docker数据持久化机制.bind mounts依赖主机目录结构,volumes完全由Docker管理.Volumes有以下优点: Volumes更容易备份和移植. 可以通过Docker CLI或API进行管理 Volumes可以无区别的工作中Windows和Linux下. 多个容器共

Docker集群部署SpringCloud应用

docker环境准备 # linux下的安装,自行百度 # windows docker toolbox下载地址 https://download.docker.com/win/stable/DockerToolbox.exe # 创建myvm3 这个虚拟机内存尽量大,6g以上最好 # https://0eenj1uv.mirror.aliyuncs.com这个是阿里云加速器的地址. docker-machine create --virtualbox-memory "6144" --

039、Data Volume 之 bind mount (2019-02-28 周四)

参考https://www.cnblogs.com/CloudMan6/p/7142150.html Date Volume 本质上是Dokcer host文件系统中的目录或者文件,能够直接被mount到容器的文件系统中. Data Volume 有如下特点: 1.Data Volume 是目录或者文件,而非没有格式化的磁盘(块设备) 2.容器可以读写volume中的数据 3.volume数据可以被永久的保存,即使使用他的容器已经销毁 现在有三种方式来存储数据:镜像层.容器层.volume .考

Docker私有仓库部署和管理

Docker私有仓库部署和管理 本章结构: Harbor介绍 部署Harbor所依赖的Docker Compose服务 部署Harbor服务 Harbor日常操作管理 Harbor管理生命周期 Harbor介绍 Harbor是VMware公司开源的企业级Docker Registry项目 Harbor的优势 基于角色控制 基于镜像的复制策略 支持LDAP目录服务/AD域服务 图像删除和垃圾收集 图形UI(可以访问Web界面) 审计 RESTful API Harbor架构组成 Proxy: 通过

基于docker、kubernetes部署openstack到atomic系统上

声明: 本人阅读笔记,翻译类文章仅作意译.如有不对之处,请指出. 需要更本源的理解,请自行阅读英文. 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 新浪微博:寻觅神迹 内容系本人学习.研究和总结,如有雷同,实属荣幸! 基于docker.kubernetes部署openstack到atomic系统上 openstack的服务定义,是不是看起来很简洁? openstack的实际组件构成,是不是看起来很复杂? 所有的openstack

深入浅出Docker(四):Docker的集成测试部署之道

1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过Image的形式分享给项目的所有开发成员,以简化开发环境的搭建.但是,在没有Docker技术之前就已经有类如Vagrant的开发环境分发技术,软件开发者一样可以创建类似需求的环境配置流程.所以在开发环境方面,Docker技术的优势并不能很好

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成. 第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用.另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作. 安装jre,请参考:http://www.wikihow.com/Install-Java-on-Linux 安装tomcat,请参考:ht