1、开通阿里云命名空间
(1)、我们的方式是通过Jenkins将GitHub的项目打成镜像推送到阿里云上面,再通过Jenkins拉到服务器上面进行编译启动从而实现我们的需求,所以要先准备好阿里云相关东西。
(2)、进入阿里云后台搜索容器镜像服务,选择命名空间,开始创建一个命名yangqingci的命名空间。
(3)、然后点击下面的授权管理菜单,前往RAM授权,点击人员管理-》新建用户
创建完用户,设置好密码之后为用户添加权限、也可以将用户为用户创建个组添加组权限,添加如下权限就够了,其他权限作用我也不太清楚。
AliyunCSFullAccess
AliyunContainerRegistryFullAccess
AliyunContainerRegistryReadOnlyAccess (4)、创建完RAM用户后需要用此用户登录阿里云新建一个个人实例,设置完密码就可以验证 docker login --username=yangqingci@1710245820341000 registry.cn-shanghai.aliyuncs.com
2、给自己的项目添加DockerFile和Compose文件
(1)、我现在有两个项目,一个是后端java接口项目,一个是前端html+nginx项目。为自己的后端接口项目根目录新建个Dockerfile文件,内容如下:
FROM java:alpine
WORKDIR /app
COPY target/tbk-api.jar .
ENTRYPOINT ["java", "-jar", "tbk-api.jar"]
CMD ["--spring.profiles.active=prod"]
(2)、为自己的前端项目根目录新建Dockfile文件和nginx.conf文件,此项目主要由gulp搭建前端的静态项目直接就可以放到nginx里面运行,为了方便就直接和nginx搞成了一个项目,gulp的使用会在另一篇文章单独描述。
Dockerfile文件:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY web /usr/share/nginx/html/web
RUN mkdir -p /etc/nginx/logs
nginx.conf文件:
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 102400;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $http_host "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 80;
server_names_hash_bucket_size 64;
upstream tbk-api {
server tbk-api:8080; //这个项目名称是在docker-compose文件中配置的
}
server {
listen 80;
server_name www.feichangshengqian.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
location ~ /tbk-api/ {
proxy_pass http://tbk-api;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
(3)、由于我们的项目是在docker容器内相互引用,所以这里还要使用docker-compose,还需要在后端项目的根目录下新建docker-compose.yaml
version: "2"
services:
tbk-api: #对应nginx项目名
image: registry.cn-qingdao.aliyuncs.com/yangqingci/tbk-api:prod #jenkins中配置的
container_name: prod_tbk-api
command: ["--spring.profiles.active=prod"]
environment:
TZ: "Asia/Shanghai"
ports:
- "8080:8080"
tbk-web:
image: registry.cn-qingdao.aliyuncs.com/yangqingci/tbk-web:prod
container_name: prod_tbk-web
command: ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]
links:
- tbk-api
ports:
- "80:80"
- "443:443"
(4)、到此我们项目的基本配置就完成了,下面就开始结合docker和jenkins来实现项目的自动部署
项目结构目录如下:
因部分内容涉及个人隐私,如果需要查看本贴隐藏内容请联系
注意:本文归作者所有,未经作者允许,不得转载!