服务器部署(服务器部署docker)

服务器部署(服务器部署docker)部署的应用仅仅是简单应用程序 使用的是 node 管理的 web 应用 具体我也不是很会 当然也可以配置 tomcat 服务器 这里主要是学习 docker 需要客户机和服务机 其中服务机必须要为 Linux 操作系统 逻辑大致分为以下 在开发者 PC 中编写程序 使用 git push 将源码上传到服务器 服务器收到客户机的 git push 命令后 执行 git hook 在 git hook 中创建 docker 镜像

大家好,我是讯享网,很高兴认识大家。



  部署的应用仅仅是简单应用程序,使用的是node管理的web应用,具体我也不是很会,当然也可以配置tomcat服务器。这里主要是学习docker。需要客户机和服务机,其中服务机必须要为Linux操作系统。逻辑大致分为以下:

  1. 在开发者PC中编写程序
  2. 使用git push将源码上传到服务器
  3. 服务器收到客户机的git push命令后,执行git hook
  4. 在git hook中创建docker镜像,并以容器运行

服务器部署docker架构图 docker 服务器部署_git
讯享网

 

  1. 在客户机创建git项目

服务器部署docker架构图 docker 服务器部署_docker_02

  2. 在客户机编写Node.js需要的文件并提交到git

  • app.js文件

服务器部署docker架构图 docker 服务器部署_docker_03

  • package.json文件

服务器部署docker架构图 docker 服务器部署_git_04

  • 把编写的文件提交到git

服务器部署docker架构图 docker 服务器部署_git_05

  注意:git如果是新安装的需要配置名字和邮箱,具体命令为:git config –global user.name <姓名>,git config –global user.email <邮箱>。

  3. 编写Dockerfile并提交到git

  • Dockerfile文件

服务器部署docker架构图 docker 服务器部署_ubuntu_06

  文件说明:

  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

服务器部署docker架构图 docker 服务器部署_ubuntu_07

  4. 在客户机创建ssh密钥

  执行命令ssh-keygen可以生成由RSA加密算法的非对称密钥,路径默认,密码为空就可以了。

服务器部署docker架构图 docker 服务器部署_docker_08

  可以看到生成的id_rsa私钥和id_rsa.pub公钥文件。

  5. 在服务机上安装git和Dicker并创建git项目

  我这里的服务机是虚拟机,也是Ubuntu系统。执行命令:

服务器部署docker架构图 docker 服务器部署_git_09

服务器部署docker架构图 docker 服务器部署_服务器部署docker架构图_10

  6. 把客户机生成的公钥文件添加到服务机

  在服务机/home/用户目录上创建.ssh目录,并设置权限: 

  然后把客户机生成的id_rsa.pub文件内容复制到服务机.ssh目录下的authorized_keys文件中,并添加读写权限。(这里的公钥文件内容只适合我这里的非对称密钥)

服务器部署docker架构图 docker 服务器部署_git_11

  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:进行创建镜像,运行镜像等操作。

  文件创建完成后,为其添加可执行权限:

服务器部署docker架构图 docker 服务器部署_服务器部署docker架构图_12

  为了在服务机上能不添加sudo就可以执行docker命令,还需要在服务机上执行命令:

  注意要重启,我这实验时注销并不起作用,唯有重启才起作用。重启后,执行随意的docker命令,如docker images看看有没有成功可以判断是否可以不加sudo执行docker命令。如下图所示为成功的:

服务器部署docker架构图 docker 服务器部署_git_13

  8. 在客户机尝试推送代码

  首先在客户机上添加远程仓库的地址,执行命令:

  命令用法:git remote add origin <服务机用户名>@<服务机IP或域名>:服务机用户目录下的git仓库目录。 

服务器部署docker架构图 docker 服务器部署_docker_14

  然后开始推送仓库到服务机,执行命令:

服务器部署docker架构图 docker 服务器部署_docker_15

  发现服务机拒绝了,看到提示有说设置receive.denyCurrentBranch配置成ignore,参考,在服务机的simpleapp目录上编辑修改.git/config文件,在后面添加如下代码:

服务器部署docker架构图 docker 服务器部署_docker_16

  修改完成后,再回到客户机,把仓库推送到服务机上,执行命令:

服务器部署docker架构图 docker 服务器部署_docker_17

                          …

服务器部署docker架构图 docker 服务器部署_git_18

  可以看到推送成功了,并且看到服务机上执行了CMD nodejs app.js,这时可以尝试浏览器访问服务器看看是否成功运行程序。在客户机上的浏览器输入192.168.1.246:80,我这里的服务机ip地址是192.168.1.246,程序端口上面设置的是80。

服务器部署docker架构图 docker 服务器部署_docker_19

  可以看到程序运行成功,这样服务器就可以自动运行每一次提交给它的源码了。

  9. 在服务机上查看docker的信息

  程序能够运行,是因为服务器成功创建了镜像并且成功运行了docker容器,在服务器上执行命令:

服务器部署docker架构图 docker 服务器部署_服务器部署docker架构图_20

  可以看到创建的simpleapp镜像和容器simpleapp。

小讯
上一篇 2025-05-03 11:54
下一篇 2025-05-14 18:49

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177071.html