docker入門(創(chuàng)建一個簡單的tornado項目)

基礎(chǔ)條件: ubuntu14.04, docker for ubuntu14.04安裝成功

  1. 在本地創(chuàng)建一個簡單的tornado項目

    在/Public/testApp創(chuàng)建app.py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

 application = tornado.web.Application([

     (r"/", MainHandler),

])

if __name__ == "__main__":

    application.listen(8888)

    tornado.ioloop.IOLoop.instance().start()

2.繼續(xù)創(chuàng)建我們要使用的文件, requirements.txt

    tornado

3.創(chuàng)建一個sources.list用來代替ubuntu原有的數(shù)據(jù)源

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

3.創(chuàng)建Dockerfile文件構(gòu)建一個鏡像, 我們以ubuntu14.04作為基礎(chǔ)鏡像, 我們使用網(wǎng)易蜂巢的docker鏡像倉庫, https://c.163.com/hub#/m/repository/?repoId=3186, 首先拷貝14.04-tools的Dockerfile然后做一些修改


FROM hub.c.163.com/library/ubuntu:14.04
MAINTAINER lpj24

WORKDIR /myapp    #工作目錄

COPY ./app.py /myapp/        #拷貝項目文件到/myapp目錄下
COPY ./Dockerfile /myapp/

COPY ./requirements.txt /myapp/
RUN mkdir -p /var/run/sshd

COPY sources.list /etc/apt/
RUN apt-get update \
    && apt-get update && apt-get install -y openssh-server vim tar wget curl rsync bzip2 iptables tcpdump less telnet net-tools lsof sysstat cron supervisor python2.7 python-pip\ 
    && rm -rf /var/lib/apt/lists/*
RUN sed -i s/"PermitRootLogin without-password"/"PermitRootLogin yes"/g /etc/ssh/sshd_config
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 22 8888
COPY sshd.conf /etc/supervisor/conf.d/sshd.conf
COPY myapp.conf /etc/supervisor/conf.d/myapp.conf   #supervisor的項目管理

RUN pip install -r requirements.txt
CMD ["/usr/bin/supervisord"]

4.創(chuàng)建myapp.conf, 從網(wǎng)易蜂巢拷貝sshd.conf到/Public/testApp/下

myapp.conf

[program:myapp]
command=python app.py
directory=/myapp
autostart=true
autorestart=true

sshd.conf

[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D

5.有了需要的文件之后開始構(gòu)建一個名字為pythonapp的鏡像

 docker build -t pythonapp:v1 .
 docker images

可以看到一個名字為pythonapp的鏡像

  1. 運行一個名字為appcontainer的容器, 使用宿主機4000與8888映射
docker run -d --name appcontainer1 -p 4000:8888 pythonapp:v1
#進入容器查看app進程是否已經(jīng)啟動
docker exec -it appcontainer /bin/bash
supervisorctl
#查看是否有myapp的進程 或者直接在宿主機瀏覽器127.0.0.1:4000訪問是否可以瀏覽
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,850評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,756評論 0 120
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,599評論 19 139
  • 一、需求由于在測試環(huán)境中使用了docker官網(wǎng)的centos 鏡像,但是該鏡像里面默認(rèn)沒有安裝ssh服務(wù),在做測試...
    蝦米在海飄閱讀 1,011評論 0 3
  • 1) 如何向腳本傳遞參數(shù) ? ./script argument 例子: 顯示文件名稱腳本 ./show.sh f...
    Miley_MOJIE閱讀 754評論 0 0

友情鏈接更多精彩內(nèi)容