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 代理

参考

posted @ 2019-03-03 20:31  Michael翔  阅读(520)  评论(0编辑  收藏  举报