web项目容器化笔记

web项目容器化笔记

p5平台包含:admin、desktop、api、wx、wap总共5个需要部署到Linux服务器上的后台服务程序。所以容器化,也就是将其封装成由容器引导运行!这里边涉及的主要由:容器本身的配置(build dockerfile),容器实例化(创建新实例,删除新实例),实力的管理(启动,重启,关闭);不容容器集群的建立。

p5webpy

p5webpy作为p5平台运行的基础容器存在,通过不同的实例可以其不同的作用。

p5webpy dockerfile

FROM w3.fengsitech.com:5000/centos:7
MAINTAINER Hao Luo, luohao.brian@gmail.com
LABEL name="Webpy Image" \
    vendor="Fensitech" \
    license="GPLv2" \
    build-date="2016-05-19"

# Install all prerequisite RPM packages
RUN rm -rf /etc/yum.repos.d/*
ADD base.repo /etc/yum.repos.d/base.repo
ADD epel.repo /etc/yum.repos.d/epel.repo
RUN yum -y update && \
    yum install -y python-pip libffi-devel python-devel python-setuptools \
                   gcc swig libxml2-devel libxslt-devel libjpeg-turbo-devel \
                   openssl-devel && \
    yum clean all

# Install all prerequisite python packages
RUN pip install --upgrade pip -i https://pypi.douban.com/simple
RUN SWIG_FEATURES="-cpperraswarn -includeall -I/usr/include/openssl" pip install \
                python-magic==0.4.6 \
                pyOpenSSL \
                m2crypto==0.22.3 \
                web.py==0.37 \
                peewee==2.5.1 \
                cryptography==0.9 \
                pycurl==7.19.0 \
                beautifulsoup4 \
                qrcode \
                poster \
                uwsgi \
                redis \
                Pillow \
                lxml \
                PyMySQL \
                -i https://pypi.douban.com/simple

# init
ADD dumb-init_1.0.0_amd64 /sbin/dumb-init
RUN chmod +x /sbin/dumb-init

# startup script
ADD startup.sh /sbin/startup.sh
RUN chmod +x /sbin/startup.sh

# upload dir
RUN mkdir /code
RUN mkdir /var/log/code
VOLUME ["/code", "/var/log/code"]

EXPOSE 3031

ENV DB_HOST "mysql"
ENV DB_PASSWORD "root"
ENV DB_USER "root"
ENV DB_NAME "phonecms2015"
ENV REDIS_HOST "redis"
ENV REDIS_PORT "6379"
ENV REDIS_DB "0"

CMD ["/sbin/dumb-init", "/sbin/startup.sh"]

镜像管理

1、查看镜像列表

docker images

2、删除镜像

docker rmi p5webpy

3、创建新镜像

docker build --force-rm=true -t p5webpy .

实例管理

1、查看实例列表

docker ps

2、删除实例

docker rm p5admin

3、创建实例
后面主要是实例化p5平台各个后台程序。

docker run -d --name p5admin -v /home/webapps/p5/admin:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln --link redis:redis-ln p5webpy

4、查看运行的实例

docker ps -a

admin

关于容器间的关联,由于关联是有依赖性的,所以,必须先实例化(实例化完成会自动运行)被依赖的容器:这里nginx作为web服务器,他需要管理admin,所以先实例化admin,在实例化nginx

# 实例化MySQL容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 --volumes-from=mysql-data -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# 实例化redis容器
docker run --name redis -v /home/docker/data/redis:/data -d w3.fengsitech.com:5000/redis redis-server --appendonly yes

admin依赖容器:MySQL、redis

# 实例化webpy:admin
docker run -d --name p5admin -v /home/webapps/p5/admin:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln --link redis:redis-ln p5webpy
# 实例化webpy:desktop
docker run -d --name p5desktop -v /home/webapps/p5/desktop:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln --link redis:redis-ln p5webpy
# 实例化webpy:weixin
docker run -d --name p5weixin -v /home/webapps/p5/weixin:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln --link redis:redis-ln p5webpy
# 实例化webpy:wap
docker run -d --name p5wap -v /home/webapps/p5/wap:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln --link redis:redis-ln p5webpy
# 实例化webpy:api
docker run -d --name p5api -v /home/webapps/p5/api:/code -v /home/webapps/p5/log:/var/log/code --link mysql:mysql-ln p5webpy

nginx依赖容器:webpy

#实例化一个nginx容器:nginx
docker run -d -p 80:80 -p 443:443 --name nginx --link wiki:wiki-ln --link p5admin:p5admin-ln --link bugzilla:bugzilla-ln --link cgit:cgit-ln -v /home/docker/data/nginx/conf.d:/etc/nginx/conf.d -v /home/docker/data/nginx/log:/var/log/nginx -v /home/docker/data/nginx/html:/var/www/html w3.fengsitech.com:5000/nginx:1.9

你可能感兴趣的:(Linux服务器,第三方系统搭建)