服务端java工程
需要部署项目的服务器上配置
1./home/info-plat/my-project目录下准备3个文件
Dockerfile
FROM moxm/java:1.8-full
RUN mkdir -p /my-project
WORKDIR /my-project
COPY my-project.jar project.jar
EXPOSE containerPort
ENV TZ=Asia/Shanghai JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"
CMD java -jar project.jar $JAVA_OPTS
start.sh
#!/bin/bash
docker build -t imageName .
echo "build image end"
docker run --name containerName -p hostPort:containerPort -d imageName
stop.sh
#!/bin/bash
docker stop containerName
echo "stop container end"
docker rm containerName
echo "remove container end"
docker rmi imageName
echo "remove image end"
Jenkins任务配置
1.SSH Server
2.构建后操作
- 选择Send build artifacts over SSH
- SSH Server选择info-plat-dev
- Transfers Transfer Set配置
Source files:配置需要send的项目jar包,如xx1/xx2/project.jar。注意该路径是相对.jenkins/workspace/taskName的,即完整路径是.jenkins/workspace/taskName/xx1/xx2/project.jar
Remove prefix:一般希望在目标路径下只保留项目jar包,所以这里配置需要删除的前缀路径为xx1/xx2
Remote directory:配置jar要send到的远程路径,如/home/info-plat/my-project
Exec command:配置在远程服务器执行的shell脚本
echo "exec command start..."
cd /home/info-plat/my-project
sh ./stop.sh
sh ./start.sh
echo "exec command end..."
前端web工程
需要部署项目的服务器上配置
工程所在路径:/home/info-plat/pc-ui
dist是前端工程build的产物
Dockerfile
FROM nginx
RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
RUN rm -rf /etc/nginx/conf.d/default.conf
COPY ./dist /pcui
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./pc-ui.conf /etc/nginx/conf.d/pc-ui.conf
nginx.conf
user root;
worker_processes auto;
#error_log /var/log/nginx/error.log notice;
#pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
}
pc-ui.conf
# 配置springboot服务集群
upstream info_plat_pc_ui_server {
server ip:port;
keepalive 32;
}
server {
listen 80;
server_name localhost;
# 打包好的dist目录文件,放置到这个目录下
root /pcui/;
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_proxied any;
gzip_vary on;
gzip_types application/javascript application/x-javascript text/javascript text/css text/xml application/xhtml+xml application/xml application/atom+xml application/rdf+xml application/rss+xml application/geo+json application/json application/ld+json application/manifest+json application/x-web-app-manifest+json image/svg+xml text/x-cross-domain-policy;
gzip_static on;
gzip_disable "MSIE [1-6]\.";
# 注意维护新增微服务,gateway 路由前缀
location ~* ^/(path1|path2|path3) {
proxy_pass http://info_plat_pc_ui_server;
proxy_set_header Host $http_host;
proxy_connect_timeout 15s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
start.sh
#!/bin/bash
docker build -t imageName .
echo "build image end"
docker run --name containerName -p hostPort:containerPort -d imageName
echo "run end"
stop.sh
#!/bin/bash
docker stop containerName
echo "stop container end"
docker rm containerName
echo "remove container end"
docker rmi imageName
echo "remove image end"
Jenkins任务配置
与服务端类似,略