迁移服务到Openshift完整实例

本文详述了如何将应用迁移到Openshift的步骤,包括使用Dockerfile构建镜像、编写模板文件及部署应用。重点介绍了Dockerfile的编写规则和测试调试方法,以及在Openshift中导入模板文件进行镜像构建和部署的过程。
摘要由CSDN通过智能技术生成

概述

openshift提供了3种方式构建镜像:Docker, S2I, Pipeline。

  • Docker方式是典型的一种方式。

  • S2I(source to image) 适用于java, golang等需要编译的应用,因为它提供依赖包保存的功能以保证后续的镜像构建可以复用第一次下载的依赖包,减少了构建镜像的时间。

  • Pipeline是采用jenkins的方式来构建镜像,jenkins插件丰富,功能全面。

kubernetes是没有构建镜像的功能的,也就是缺失了CI这一块的功能。

大部分情况下你其实只需要第一种方式即可。本文以第一种方式来说明。

应用说明

把应用迁移到openshift或kubernetes中主要需要两个东西,一个是Dockerfile,一个是模版。本文示例的应用是一个以ansible为基础开发的批量部署系统,以下简称AU。整个应用设计到的组件包含django, celery, mysql, nginx, uwsgi, supervisor,按照标准的做法应该把每个组件都单独放到一个容器中跑,但本文为了简化流程就把所有组件放到supervisor中托管,容器启动时只启动supervisor进程。

上传项目源代码AU到git仓库

git init
git add -A .
git commit -m "init"
git remote add origin git@gitlab.example.com:au
git push -u origin master

4.编写Dockerfile
编写Dockerfile有自己的规则,每一条命令就代表一层镜像,所以写Dockerfile的时候能合并到一个命令的尽量合并,以下是AU的Dockerfile

FROM ubuntu:14.04
MAINTAINER zhanghh
#define volume /var/log/AU and volume for mysql storage
#VOLUME ["/var/log/AU", "/var/lib/mysql"]
#copy source code to container
COPY . /data/app/AU/
#set source list
RUN \
##change owner and group for /var/lib/mysql
#chown -R mysql:mysql /var/lib/mysql
#chmod 700 /var/lib/mysql
#install basic packages
apt-get install -y \
openssh-client \
mysql-server \
libmysqlclient-dev \
python-dev \
libldap2-dev \
libsasl2-dev \
libssl-dev \
libffi-dev \
supervisor \
nginx \
libjpeg8-dev \
zlib1g-dev \
python-setuptools \
python-dev \
build-essential \
python-pip \
&& pip install --upgrade setuptools;\
\
#add user ansible
adduser --home /home/ansible --shell /bin/bash ansible;\
\
#install python libraries
pip install -r /data/app/AU/requirements.txt; \
\
###mysql setting ###
#modify /etc/mysql/my.cnf
sed -i 's/bind_address/# bind_address/g' /etc/mysql/my.cnf; \
\
#start mysql service
service mysql start && \
\
#set root password
#RUN mysqladmin -u root password xxxxxxx
#create user and
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值