linux服务器使用docker容器+jenkins自动打包搭建前端VUE+后端JAVA项目

一、基础配置

1.下载更新yum工具管理
sudo yum update -y

如果容器内使用不了vim 可以在容器内输入以下命令
apt-get update
apt-get install vim -y


2.安装主题工具
yum install -y zsh

二、安装docker容器

1.下载软件包
yum install -y yum-utils device-mapper-persistent-data lvm2 

2.设置yum源 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

3.安装docker 
yum install docker-ce -y

4.启动并加入开机启动
systemctl start docker 
systemctl enable docker
输入 docker -v 验证是否安装成功,出现(Docker version 20.10.17, build 100c701) 版本信息则安装成功

docker常用命令
1.docker images 查看所有镜像
2.docker ps / docker ps -a 查看正在运行的容器/所有容器
3.docker ps -a 查看所有容器
4.docker rm / rmi  NAME/ID 删除容器/删除镜像
5.docker NAME/ID 删除镜像 NAME(容器名称) ID(容器ID)
6.docker exec -it NAME/ID /bin/bash 进入容器内部
7.docker start / stop / restart NAME/ID 启动/停止/重启
8.docker top NAME/ID 查看容器内进程
9.docker inspect  NAME/ID 查看容器相关信息
10.docker logs  NAME/ID 输出容器日志
11.docker export -o test.tar NAME/ID 将容器进行打包保存到本地,文件类型为tar
12.cat test.tar |docker import - image_name:tag 将保存的容器文件导入到镜像库中
13.docker port  NAME/ID 查看容器端口映射情况
14.docker cp  NAME/ID : /docker/user/test.txt /main/user/file 从容器里面拷贝文件到宿主机 拷贝文件夹不需要指定文件名称
15.docker cp /main/user/test.txt NAME/ID : /docker/user/file  从宿主机中拷贝文件到容器
15.systemctl restart  docker 重启服务

三、安装jenkins

1.获取jenkins镜像
docker pull jenkinsci/blueocean

四、安装redis

1.获取redis镜像
docker pull redis

2.创建文件夹
mkdir /home/docker/images/redis
mkdir /home/docker/images/redis/data
ridis.conf文件上传到/home/docker/images/redis 目录下

3.创建并启动服务
docker run -p 6379:6379 --name redis --sysctl net.core.somaxconn=1024 -v /home/docker/images/redis/redis.conf:/etc/redis/redis.conf  -v /home/docker/images/redis/data:/data -e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" -d redis redis-server /etc/redis/redis.conf --appendonly yes

4.配置主从
获取配置文件 wget http://download.redis.io/redis-stable/redis.conf
修改主库配置文件 
# bind 127.0.0.1 # 注释当前行,表示任意ip可连
daemonize yes # 让redis服务后台运行
requirepass 123456 # 设定密码


修改从库配置文件
# bind 127.0.0.1
daemonize yes
requirepass 123123 # 从库密码,可选配置
# <masterip>表示主库所在的ip,而<masterport>则表示主库启动的端口,默认是6379
slaveof 127.0.0.1 6300
# 主库有密码必需要配置,<master-password>代表主库的访问密码
masterauth 123456

命令方式
1.redis-cli
2.slaveof xxxxxxx
3. CONFIG SET masterauth xxxx

事项:
查看容器内部端口 docker inspect 容器 找到IPAddress
1.端口占用
netstat -tanlp 查看端口,使用 kill PID 杀掉占用端口
2.设置密码 --requirepass 123456
3.解决bug 在宿主机中执行 echo 1 > /proc/sys/vm/overcommit_memory

五、安装mysql(5.7)

1.获取mysql镜像
docker pull mysql:5.7

2.创建mysql文件夹管理
mkdir /home/docker/images/mysql
cd /home/docker/images/mysql
echo $PWD

3.创建启动服务并设置初始密码
docker run --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:5.7

4.进入容器
docker exec -it -u root mysql /bin/bash

5.输入密码
mysql -u root -p"123456"

6.开启远程访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '服务器登陆密码';

7.刷新配置 
flush privileges;
CTRL + shift +d退出

六、安装nginx

1.获取nginx镜像
docker pull nginx

2.创建nginx文件夹管理
mkdir /home/docker/images/nginx
mkdir /home/docker/images/nginx/www
mkdir /home/docker/images/nginx/conf
mkdir /home/docker/images/nginx/logs

4.上传nginx配置文件 nginx.conf 到
/home/docker/images/nginx/conf 目录
配置文件内容如:

user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
server {
    listen  80;
    server_name 120.76.136.43;

    location /  {
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://www.baidu.com;
    }
}

#前端访问平台
server {
    listen  80;
    server_name iot5g.gdssly.cn;

    location /  {
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://120.76.136.43:18080;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

#前端访问移动端
server {
    listen  80;
    server_name iotcardwechat.gdssly.cn;

    location /  {
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://120.76.136.43:18000;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

#后端接口
server {
    listen  80;
    server_name openapi.gdssly.cn;

    location /  {
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://120.76.136.43:18888;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

server {
    listen  80;
    server_name iotcardpro.gdssly.cn;

    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://14.215.49.31:19000;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

    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 config
    gzip_static on;
    gzip_proxied expired no-cache no-store private auth;
    gzip_http_version 1.1;
    gzip on;
    gzip_buffers 32 4K;
    gzip_min_length 1k;
    gzip_comp_level 6;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml application/html text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    include /etc/nginx/conf.d/*.conf;
}


3.创建并启动服务
docker run -d -p 80:80 --name nginx -v /home/docker/images/nginx/www:/usr/share/nginx/html -v /home/docker/images/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/images/nginx/logs:/var/log/nginx nginx

启动服务
docker start nginx

七、创建JAVA jar包服务

1.获取java版本(1.8)创建文件夹管理以及上传jar包
docker pull kdvolder/jdk8
mkdir /home/docker/images/java


2.创建docker.sh脚本文件

# 源jar路径  即jenkins构建后存放的路径
#SOURCE_PATH=/dockerdatas/docker_jenkins/jenkins_home/workspace/xxl-job-iot/xxl-job-admin/target

cp /docker/images/jenkins/workspace/定时调度任务/xxl-job-admin/target/xxl-job-admin-2.3.1-SNAPSHOT.jar ./xxljob.jar

#docker 镜像/容器名字或者jar名字 这里都命名为这个
  SERVER_NAME=xxl-job
  
 #容器id
 CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
 
 #镜像id
 IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')

 # 构建docker镜像
         if [ -n "$IID" ]; then
                 echo "存在$SERVER_NAME镜像,IID=$IID"
                  docker stop $SERVER_NAME   # 停止运行中的容器
                  docker rm $SERVER_NAME     ##删除原来的容器
                  docker rmi $IID   ## 删除原来的镜像

         else
                 echo "不存在$SERVER_NAME镜像,开始构建镜像"
                      
        fi
        

  # 构建镜像 
  cd /docker/images/xxl-job
  docker build -t $SERVER_NAME .
    
# 运行容器
 # --name docker-test                 容器的名字为自定义
 #   -d                                 容器后台运行
 #   -p 8090:8090 指定容器映射的端口和主机对应的端口都为8090
 #   -v /usr:/usr   将主机的目录挂载到容器的目录中
 docker run --name $SERVER_NAME -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime -v $BASE_PATH:$BASE_PATH -d -p 8010:18888 $SERVER_NAME
 echo "$SERVER_NAME容器创建完成" 

3.创建Dockerfile文件
# jdk 是一个已有的包含 jdk 的镜像
 FROM kdvolder/jdk8
#  作者签名
 MAINTAINER LXM
#  简化 jar 的名字路径 (#:表示注释掉)
COPY xxljob.jar /xxljob.jar
#  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)
 CMD java -jar /xxljob.jar
#  设置对外端口为 18010
 EXPOSE 8010

4.注意事项:
设置文件类型 set ff=unix
设置文件权限 chmod u+x file.sh
执行脚本文件 ./文件名.sh

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值