记第一次在正式环境做自动化部署操作

版权声明:转载请注明作者 https://blog.csdn.net/myth_g/article/details/84887447

1.需要用到的软件:jenkins,docker,docker-compose,maven

2.软件搭建工作略过,直接说配置过程,这次涉及到的后端是java打成的jar包,前端vue打成的静态文件;

3.首先git clone前后端项目.git地址使用ssh

这样可以保证每次自动构建的时候不需要输入git账号密码,详细怎么配置使用ssh方式clone这里不想细说;

4.java通过maven构建成jar包,jar包直接放到镜像使用命令即可启动,这里我们编写dockerfile文件;

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./target/api.jar /app/api.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=G                 MT+08", "-jar","/app/api.jar","--spring.profiles.active=prod"]

该命令中,将生成的jar包复制到指定目录,然后设置启动镜像时执行启动java命令;

5.配置docker-compose.yml:

version: '3.3'
services:
  anguo_db:
    image: postgres
    container_name: anguo_db
    restart: always
    environment:
      POSTGRES_PASSWORD: 123456
      POSTGRES_DB: anguo
      #POSTGRES_USER: anguo
    ports:
      - 5555:5432
    volumes:
      - ./data:/var/lib/postgresql/data/
  anguo_java:
    build:
          context: ./anguo_air_quality_early_warning
          dockerfile: ./dockerfile
    #image: anguo
    container_name: anguo_java
    restart: always
    depends_on:
      - anguo_db
    links:
      - anguo_db
    volumes:
      - ./logs:/logs
      - ./app/:/app/
    expose:
      - 8080
  anguo_nginx:
    image: nginx
    command:  nginx -g "daemon off;"
    restart: always
    ports:
      - 63401:80
    depends_on:
      - anguo_java
    links:
      - anguo_java
    container_name: anguo_nginx
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf
      - ./html/dist:/usr/share/nginx/html/

配置中使用了挂载命令,将jar包和日志文件夹挂在出来,links是连接其他镜像进行通信,dpends_on是依赖其他镜像顺序启动;volumes是挂载目录,左边为相对路径的宿主机右边是镜像目录

6.注意事项:

(1)挂载后的目录权限为root,这里我手动chown -R dev.dev 更改了文件夹用户和用户组,否则没有权限,此处不知道是否为操作有误才会出现root权限;

(2)挂载出来的app文件夹需要提前将jar包放到里面,否则启动失败;nginx的配置文件同理;

(3)这里我将jar包文件挂载出来,是因为后续自动部署时将构建的新jar包直接拷贝到文件夹后重启java镜像即可,也可以直接重新构建所有镜像的方式,不过相对较慢;

7.编写自动部署时的前后端可执行文件:

后端:javastart.sh

#!/bin/bash
cd anguo_air_quality_early_warning
git pull origin develop
mvn clean package -Dmaven.test.skip=true
cp ./target/api.jar ../app/api.jar
docker-compose restart anguo_java

前端:webstart.sh (该处需要注意,第一次最好使用npm install,否则可能会产生依赖下载补全导致构建失败)

#!/bin/bash
export PATH=/home/dev/node-v8.10.0-linux-x64/bin:$PATH
cd anguo-air
git pull origin master
cnpm install
cnpm run generate
cd ../html/
rm -rf *
cd -
mv dist ../html/
docker-compose restart anguo_nginx

nginx配置: (该处java程序中,需要指定访问路径为 /api)

server {
   listen 80;
   server_name localhost;
   client_max_body_size   20m;

   location / {
     root   /usr/share/nginx/html/;
     index  index.html;
   }


   location /api {
     proxy_pass   http://anguo_java:8080/api;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_redirect off;
   }
}

8.展示一下项目文件存放位置:

9.配置jenkins:

 

 

 

上面的jenkins项目地址和秘钥填入gitlab中:

位置:项目中->setting->Integrations->Push events

 

-------------------------------------------------------------------------------------------------

以上就是完整一套我的自动部署流程;

第一次工作经历

08-02

本人今年还未毕业,下个学期就上大四了,但是为了提前锻炼一下自己,就利用暑假的时间出来找了份工作,所在城市从事android开发的公司不多(或者说IT行业在这个城市不多),这个城市普遍给的工资不高,好了,不说那么多了,言归正传,说工作的事吧。rnrn 进入这家公司的第一天,项目经理拿来了一个笔记本电脑,让我给这台装上android开发环境,以后给我用,他发送给我了一个android SDK和ADT安装包,同时给我了一个MyEclipse软件的安装文件,让我先配置环境。我很快就把java JDK和android开发环境配置好了,但是那个MyEclipse 10却在安装android的开发文件时却总是出现问题,会卡在那里,弄了一个上午还没有弄好,然后项目经理就说“我怎么感觉你的能力没有我印象当中的好呢”,听了这句话,我没有说什么,到了下午我还是没有安装好,后来发现项目经理给我的MyEclipse 10里面的那个Eclipse插件有问题,我告诉他之后,他让我重新下载一个,我就去网上重新下载了一个新的MyEclipse10,结果几分钟的事就搞定了。rnrn第二天上午他就发过来消息问我安装好开发环境了没有,我说已经安装好了。然后他就直接给我分配任务了,让我独自一个人做一个高铁施工管理有关的项目,也不给我介绍一下项目的内容,直接给我发来美工做的项目流程图,让我看图来做,美工做的图也是让人哭笑不得,有些地方本来是输入框的,美工给画成了下拉列表,有些地方本来是这个模块的内容,美工却把这个模块的内容画到了另一个模块上面。rnrn 我问项目经理的时候他说你就按你自己的正常思路来理解,可是有些不能按正常思路来理解的内容,他也无法判别怎样来做,今天给我说是这样做的,明天却又说让我那样做,有时甚至让我怀疑他是不是两个人,今天是这个人,明天又变成了另外一个人。问他一些技术性的问题,他不说你技术能力有问题,就说你下去多看看书,有时给你讲个问题,那声音像是谁和他吵架似的,弄得我都不想问他问题了,于是去Q群里面问问题,他又说你去群里面问问题,还不如你去看书呢,我说群里面给我提供个思路就行了,其他的我自己去查资料。rnrn这个项目七千多元钱(我之所以知道价格,是因为有一次他在给我讲问题时老总问他这个项目多少钱,他看我在跟前不想说,想了一会儿,感觉老总问又不能不说,于是就说六七千元,我觉得不止这些,这个是给高铁做的软件,应该不会这么便宜,可能是有意瞒着我吧),他让我三个星期内让我做完,但是我看他发给我的关于这个项目的资料是6月份的,这个项目看来已经好久了,因为我是七月21号上班的,他说让我8月10号之内完成,我估计自己是完不成了,该怎么办?请各位过来人给小弟出个主意rn rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试