用docker搭建python项目运行环境
Docker Hub镜像加速器
- 安装docker:
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- 参考这篇注册阿里开发者,拿到专属加速器地址,类似于:https://xxxx.mirror.aliyuncs.com
- 参考Docker加速器下面的说明配置并重启docker,我是ubuntu 16.04,如下:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
[Service]
ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://xxxx.mirror.aliyuncs.com
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
写Dockerfile
# image for portfolio
FROM ubuntu:16.04
MAINTAINER wwy version: 0.1
ENV LD_LIBRARY_PATH=/usr/local/lib
COPY ./sources.list /etc/apt/
RUN depends='make r-base r-base-dev' &&\
apt-get update &&\
apt-get install -y $depends
#anaconda
COPY ./Anaconda2-4.2.0-Linux-x86_64.sh /tmp/
RUN bash /tmp/Anaconda2-4.2.0-Linux-x86_64.sh -b
ENV PATH /root/anaconda2/bin:$PATH
#ta-lib
COPY ./ta-lib-0.4.0-src.tar.gz /tmp/
RUN cd /tmp &&\
tar -xzf ta-lib-0.4.0-src.tar.gz &&\
cd /tmp/ta-lib &&\
./configure &&\
make &&\
make install
#pip
COPY ./pip.conf /root/.config/pip/
COPY ./SuiteSparse-4.5.3.tar.gz /tmp/
ENV CVXOPT_SUITESPARSE_SRC_DIR=/tmp/SuiteSparse
RUN cd /tmp &&\
tar xzf SuiteSparse-4.5.3.tar.gz &&\
pip install celery flasgger flask rpy2 arch pymongo grpc protobuf cvxopt ta-lib grpcio seaborn
#Qi4Trade
COPY Qi4Trade /tmp/Qi4Trade
RUN cd /tmp/Qi4Trade/trunk &&\
python setup.py install
#SITxuk
COPY SITxuk /tmp/SITxuk
RUN cd /tmp &&\
R CMD build SITxuk &&\
R CMD INSTALL SITxuk_0.1.0.tar.gz
#ndparser
COPY ndparser.so /root/anaconda2/lib/python2.7/site-packages/
COPY ndparser-1.0-py2.7.egg-info /root/anaconda2/lib/python2.7/site-packages/
#clear
RUN apt-get purge -y --auto-remove make &&\
apt-get clean &&\
rm -rf /tmp/* &&\
rm -rf /var/lib/apt/lists/*
#porfolio-web
COPY portfolio-web /root/portfolio-web
COPY libgomp.so.1.0.0 /root/anaconda2/lib/
ENV FLASK_SETTINGS=/root/portfolio-web/trunk/api/dev
ENV PYTHONPATH=/root/portfolio-web/trunk
WORKDIR /root/portfolio-web/trunk
EXPOSE 8686
CMD ["python","api/server.py"]
# Add Tini. Tini operates as a process subreaper for jupyter. This prevents kernel crashes.
ENV TINI_VERSION v0.6.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
EXPOSE 8888
CMD ["jupyter","notebook","--port=8888","--no-browser","--ip=0.0.0.0"]
Dockerfile要注意的点
- 用&&\把所有命令串起来在一个Run里执行,避免产生太多层
- 可以把/etc/apt/sources.list拷过去,加速apt-get install; 把pip.conf拷到/root/.config/pip/pip.conf,指向douban的源,加速pip install
- 所有安装都是silent mode, 包括: apt-get -y、anaconda -b等
- 报pip not found: anaconda不会自动把bin加入PATH,需要手工加:
ENV PATH /root/anaconda2/bin:$PATH
- 每个阶段的命令写在一起,从COPY+ENV+RUN,这样万一下面的COPY改了,还能重用以前的cache
- COPY要这么写:
COPY ta-lib /tmp/ta-lib
,如果只是COPY ta-lib /tmp/
只会把ta-lib里面的内容拷过去 - 国内的镜像源有时apt-get install的时候会报"Hash Sum mismatch"的错误,不覆盖/etc/apt/sources.list,用官方的就好
- 很多server比如nginx、jupyter都默认监听localhost,要改成0.0.0.0,才能在容器外访问
build + export image
docker build -t test:v0.1 .
docker run -i -p 8686:8686 test:v0.1
docker save test:v0.1 | gzip > portfolio.tar.zip
//复制到其他机器上,导入
docker load -i portfolio.tar.zip
用docker搭建python项目运行环境的更多相关文章
- Docker搭建Java Web运行环境
1. 前提条件 安装了Docker的64位Linux 操作系统 Linux操作系统镜像 Linux版本的JDK压缩包 Linux版本的Tomcat压缩包 2. 启动容器 容器是在镜像的基础上来运行的, ...
- 使用 Docker 搭建 Java Web 运行环境
黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...
- 转:使用 Docker 搭建 Java Web 运行环境
原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...
- 使用 Docker 搭建 Java Web 运行环境(转)
原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...
- 使用Docker搭建Java Web运行环境
这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...
- 利用Docker搭建java项目开发环境
一.需求 一台 Ubuntu 16.0.4 LTS ,安装了Docker服务,Rancher服务,也制作了Tomcat相关的image,接下来我们就来说一下如何快速的构建一个开发环境和测试环境 二.步 ...
- python项目运行环境安装小结
安装最新即可,实际的版本号可能不一样 安装过程较复杂,建议用一台单独的vm安装,能做成docker image最好 基础软件 nginx-1.10.0: sudo apt-get install ng ...
- 如何利用Intellij Idea搭建python编译运行环境 (转)
首先进入Intellij Idea的官方网站:点击打开链接 点击download,选择旗舰版进行下载.网上的破解教程很多,也可以注册一个学生账号拿到一年的免费试用权. 安装过程不再细说,第一次打开选择 ...
- 在linux服务器上搭建Struts2项目运行环境
服务器上工作: 首先要先装java https://www.cnblogs.com/lamp01/p/8932740.html 然后装好tomcat https://www.cnblogs.com/y ...
随机推荐
- pat1067 在离散数学中置换群思想上可用并查集和递归两种方法求解问题
1.递归求解 注:叙述时 节点其实就是数字0-N-1 !!!最好用一个数组记录0-N-1每个数字的位置 !!!递归计算一个置换群内部的节点数 分为两种情况 累加M,M即是一个置换群所有数字在正确位置 ...
- CF Round #551 (Div. 2) D
CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...
- MySQL之 视图,触发器,存储过程,函数,事物,数据库锁,数据库备份
1.视图 视图: 是一个虚拟表,其内容由查询定义: 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. ...
- 【转载】RESTful 架构风格概述
本文转载自https://blog.igevin.info/posts/restful-architecture-in-general/ 在移动互联网的大潮下,随着docker等技术的兴起,『微服务』 ...
- CentOS7攻克日记(二) —— 配置初始化及网络配置
reboot之后到达这个页面,点击第一个进去同意一下协议之后Done,然后点击右下角的FINISH
- 《Clean Code》阅读笔记
Chapter 2 命名 命名要表现意图 避免歧义和误导,增强区分 命名可读性:便于发音,增强印象,便于交流 命名可查性:增强区分,便于搜索 类和对象的命名:名词或名词短语 方法的命名:动词或动词短 ...
- mysql主从同步与读写分离
为了解决数据库服务的高可用问题以及负载均衡问题, 1正常情况下可以互为主从,均衡分担数据流量, 2防止数据库服务器在宕机的情况下可以顺利切换到正常的数据库服务器,减少公司的客户流量损失故公司需要搭建数 ...
- Project Euler 66: Diophantine equation
题目链接 思路: 连分数求佩尔方程最小特解 参考博客 模板: LL a[]; bool min_pell(LL d, LL &x, LL &y) { LL m = floor(sqrt ...
- structure
https://wenku.baidu.com/view/a82b12d62dc58bd63186bceb19e8b8f67c1cef04.html?sxts=1541829436140
- HTL里面使用sling model的时候传参问题
Question: Can we pass in parameters? <div data-sly-use.myClass=”${ ‘mysite.myproject.HeaderCompon ...