部署的应用仅仅是简单应用程序,使用的是node管理的web应用,具体我也不是很会,当然也可以配置tomcat服务器。这里主要是学习docker。需要客户机和服务机,其中服务机必须要为Linux操作系统。逻辑大致分为以下:
- 在开发者PC中编写程序
- 使用git push将源码上传到服务器
- 服务器收到客户机的git push命令后,执行git hook
- 在git hook中创建docker镜像,并以容器运行
1. 在客户机创建git项目
2. 在客户机编写Node.js需要的文件并提交到git
- app.js文件
- package.json文件
- 把编写的文件提交到git
注意:git如果是新安装的需要配置名字和邮箱,具体命令为:git config --global user.name <姓名>,git config --global user.email <邮箱>。
3. 编写Dockerfile并提交到git
- Dockerfile文件
文件说明:
FROM:表示是ubuntu:latest镜像作为基础镜像
RUN:执行更换阿里源的操作,再然后是安装nodejs和npm软件
ADD:把前面创建的app.js和package.json文件添加到镜像的/var/www目录下
WORKDIR:切换后面RUN、CMD的执行目录
RUN:执行npm install将安装package.json文件到Node.js模块
CMD:设置用于在容器启动时利用nodejs运行app.js
- 提交到git
4. 在客户机创建ssh密钥
执行命令ssh-keygen可以生成由RSA加密算法的非对称密钥,路径默认,密码为空就可以了。
可以看到生成的id_rsa私钥和id_rsa.pub公钥文件。
5. 在服务机上安装git和Dicker并创建git项目
我这里的服务机是虚拟机,也是Ubuntu系统。执行命令:
6. 把客户机生成的公钥文件添加到服务机
在服务机/home/用户目录上创建.ssh目录,并设置权限:
然后把客户机生成的id_rsa.pub文件内容复制到服务机.ssh目录下的authorized_keys文件中,并添加读写权限。(这里的公钥文件内容只适合我这里的非对称密钥)
7. 在服务机上设置git hook的post-receive文件
在服务机的simpleapp/.git/hooks目录下创建post-receive脚本文件,这个文件在接收到客户机的git push命令后会自动执行。
在post-receive文件填入以下内容:
文件说明:
APP_NAME:当前应用程序的名称,需要和git仓库名相同
APP_FIR:设置仓库目录的路径
git checkout -f:把推送的源代码保存到仓库,需要设置GIT_WORK_TREE变量
cd:转到仓库目录
docker:进行创建镜像,运行镜像等操作。
文件创建完成后,为其添加可执行权限:
为了在服务机上能不添加sudo就可以执行docker命令,还需要在服务机上执行命令:
注意要重启,我这实验时注销并不起作用,唯有重启才起作用。重启后,执行随意的docker命令,如docker images看看有没有成功可以判断是否可以不加sudo执行docker命令。如下图所示为成功的:
8. 在客户机尝试推送代码
首先在客户机上添加远程仓库的地址,执行命令:
命令用法:git remote add origin <服务机用户名>@<服务机IP或域名>:服务机用户目录下的git仓库目录。
然后开始推送仓库到服务机,执行命令:
发现服务机拒绝了,看到提示有说设置receive.denyCurrentBranch配置成ignore,参考,在服务机的simpleapp目录上编辑修改.git/config文件,在后面添加如下代码:
修改完成后,再回到客户机,把仓库推送到服务机上,执行命令:
...
可以看到推送成功了,并且看到服务机上执行了CMD nodejs app.js,这时可以尝试浏览器访问服务器看看是否成功运行程序。在客户机上的浏览器输入192.168.1.246:80,我这里的服务机ip地址是192.168.1.246,程序端口上面设置的是80。
可以看到程序运行成功,这样服务器就可以自动运行每一次提交给它的源码了。
9. 在服务机上查看docker的信息
程序能够运行,是因为服务器成功创建了镜像并且成功运行了docker容器,在服务器上执行命令:
可以看到创建的simpleapp镜像和容器simpleapp。
到此这篇服务器部署(服务器部署docker)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-yjs/58702.html