Docker 入门指南——部署常用服务示例
MongoDB
FROM centos:centos7
MAINTAINER The CentOS Project <cloud-ops@centos.org>
RUN yum -y update; yum clean all
RUN yum -y install epel-release; yum clean all
RUN yum -y install mongodb-server; yum clean all
RUN mkdir -p /data/db
EXPOSE 27017
ENTRYPOINT ["/usr/bin/mongod"]
参考:
Redis
FROM centos:centos7
MAINTAINER The CentOS Project <cloud-ops@centos.org>
LABEL io.k8s.description="Redis is an open source, in-memory data structure store, used as database, cache and message broker." \
io.k8s.display-name="Redis 2.8.19-2.el7" \
io.openshift.expose-services="6379:redis" \
io.openshift.tags="database,redis,redis3"
LABEL Name="centos/redis-28-centos7" \
Version="2.8.19" \
Release="2" \
Architecture="x86_64"
RUN yum -y --setopt=tsflags=nodocs update && \
yum -y --setopt=tsflags=nodocs install epel-release && \
yum -y --setopt=tsflags=nodocs install redis && \
yum clean all
COPY redis-master.conf /redis-master/redis.conf
COPY redis-slave.conf /redis-slave/redis.conf
COPY entrypoint /entrypoint
RUN mkdir /redis-master-data && \
chmod 755 /entrypoint /redis-master-data && \
chown 997 /redis-master-data
EXPOSE 6379
# By default will run as random user on openshift and the redis user (997)
# everywhere else
USER 997
CMD [ "/entrypoint" ]
ENTRYPOINT [ "sh", "-c" ]
参考:
部署 Flask 应用
当前目录是get-pip
,目录结构如下:
$ tree .
.
├── app.py
├── Dockerfile
├── README.md
└── requirements.txt
app.py
:
# coding:utf-8
from flask import request, Flask
app = Flask(__name__)
@app.route("/ip", methods=["GET"])
def get_my_ip():
return request.remote_addr
@app.route('/', methods=["GET"])
def hello_world():
return 'Hello World! From IP: {}'.format(get_my_ip())
if __name__ == '__main__':
# 默认的端口就是 5000,你可以指定其他端口,例如 8081
app.run(port=5000, host='0.0.0.0', debug=True)
requirements.txt
:
Flask
requests
Dockerfile
:
FROM python:3.7
LABEL maintainer="michael"
ENV LANG C.UTF-8
COPY . /app
COPY ./.pip/pip.conf ~/.pip/pip.conf
WORKDIR /app
RUN pip install -r requirements.txt --proxy="http://127.0.0.1:3128"
ENTRYPOINT ["python"]
CMD ["app.py"]
在get-pip
目录下,构建镜像:
docker build -t registry.domain.com/michael/get-ip:latest .
推送镜像:
docker login -u micahel registry.domain.com
docker push registry.domain.com/michael/get-ip:latest
因为网络的原因,无法直接连接 pypi 官方源,所以,在 pip install
时,使用了 --proxy
参数来指定代理。
Flask 参考
Pip 代理
- Github-pip doesn't respect proxy while installing packages from requirements file
- SOF-Pip inside dockerfile under proxy
- SOF-Customize ONBUILD environment in a dockerfile 问题中附上了 pip 源设置的官方连接
参考
- Docker 快速入门 某公司的内部指导,有参考意义
Docker 入门指南——部署常用服务示例的更多相关文章
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- Docker 入门指南
Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
- docker 入门6 - 部署 【翻译】
开始,第 6 部分:部署应用 先决条件 安装 Docker. 获取第 3 部分先决条件中所述的 Docker Compose. 获取 Docker Machine,如第 4 部分先决条件中所述. 阅读 ...
- docker入门资料及常用命令
Docker17中文开发手册 :https://www.php.cn/manual/view/36147.html Linux部署Docker及常用命令: https://www.cnblog ...
- docker入门指南(转载)
原文: http://bg.biedalian.com/2014/11/20/docker-start.html 关于 docker 今天云平台的同事提到, 现在的运维就是恶性循环, 因为大家都在申请 ...
- 【Docker】docker 入门以及一些常用指令
概述 Docker是一款针对程序开发人员和系统管理员来开发.部署.运行应用的一款虚拟化平台.Docker 可以让你像使用集装箱一样快速的组合成应用,并且可以像运输标准集装箱一样,尽可能的屏蔽代码层面的 ...
- docker入门篇 部署springboot项目
安装docker Ubuntu16.04安装Docker 使用docker 注册docker服务 systemctl enable docker systemctl status docker 然后在 ...
随机推荐
- C#中生成的随机数为什么不随机?
from:https://www.xcode.me/more/net-csharp-generate-random 随机数生成方法可以说是任何编程语言必备的功能,它的重要性不言而言,在C#中我们通常使 ...
- install scala & spark env
安装Scala 1,到http://www.scala-lang.org/download/ 下载与Spark版本对应的Scala.Spark1.2对应于Scala2.10的版本.这里下载scala- ...
- Ecust DIV3 k进制 【暴力不断优化】
K进制 Description 给定一个正整数n,请你判断在哪些进制下n的表示恰好有2位是1,其余位都是0. Input 输入第一行为整数TT,表示有TT组数据(1 \le T \le 50)(1≤T ...
- JavaScript(六):错误处理机制
1.Error()构造函数 javascript解析或执行语句时,一旦发生错误,js引擎会将其抛出! JavaScript原生提供了Error()构造函数,所有抛出的错误都是这个构造函数的实例(即对象 ...
- Sql 嵌套循环
DECLARE @i INT ,@j INT BEGIN PRINT 'satrt i:'+CAST(@i AS varchar) BEGIN PRINT 'j:'+CAST(@j AS varcha ...
- 20155228 2016-2017-2 《Java程序设计》第1周学习总结
20155228 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 这部分内容是以教材为基础,根据个人的理解来描述的,有的地方的理解和表述可能不规范甚至不正确, ...
- [openjudge-动态规划]买书
题目描述 描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元.问小明有多少种买书方案?(每种书可购买多本) 输入 一个整数 n,代表总共钱数.(0 <= n < ...
- Qt信号之自定义数据类型
[1]为什么需要自定义数据类型? 内置类型毕竟很有局限性,否则为什么还需要类呢.总之,有时候,我们多么希望信号能发送自定义数据类型. 幸哉~ Qt是支持自定义信号,且自定义信号可以发送自定义数据类型的 ...
- 虚拟机连不上网 Xshell连不上虚拟机
以centos7 为例 1,确定network connection 为NAT 2, 打开网络连接中心 Control Panel\Network and Internet\Network Conne ...
- HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor
看到的最长的类名: HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhere ...