搭建基本的项目环境—安装docker、mysql、redis和集群、nginx,搭建ftp后运行springboot服务

安装docker、mysql、redis和集群、nginx,搭建ftp后运行springboot服务

1、使用官方脚本安装命令安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2、启动docker

如果你是root用户,可以直接运行如下命令

systemctl start docker

否则,你需要执行如下命令

sudo systemctl start docker

3、查看docker是否启动成功

输入如下命令,查看是否存在docker进程

ps -ef | grep docker

#CentOS 安装 Docker-Compose 加速(如有需要,修改下面 1.24.1 为指定版本号即可)
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 
#安装完后执行
sudo chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose version

4、使用docker安装mysql

docker pull mysql:5.7    这里安装5.7版本的mysql
docker images   检查镜像

docker 安装mysql 命令
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数解释:
-p 3306:3306   将容器中的3306端口映射到服务器的3306端口
-v /mydata/mysql/conf:/etc/mysql \          将配置文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql \      将配置文件挂载到主机
-v /mydata/mysql/log:/var/log/mysql \       将日志挂载在主机
-e MYSQL_ROOT_PASSWORD=root \         初始化root 用户的密码

接下来查看docker 正在运行中的容器
docker ps  

修改mysql 的配置
vi /mydata/mysql/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
max_allowed_packet=256M
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启mysql
docker restart mysql
进入docker 中查看是否修改成功
docker exec -it mysql /bin/bash
cat /etc/mysql/my.cnf

接下来可使用navicat 来连接mysql。

5、使用docker安装redis

1.下载redis 镜像
docker pull redis
创建配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
启动容器
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
运行redis
docker exec -it redis redis-cli
开启aof 持久化
vi /mydata/redis/conf/redis.conf
#添加如下内容
appendonly yes
重启redis
docker restart redis

6、使用docker安装nginx

1.拉取最新的nginx镜像

这里我们拉取最新的进行。

docker pull nginx:latest

2.查看已经拉取的镜像

docker images

3.运行容器

docker run --name nginx-test -p 80:80 -d nginx
---------------------------------------------
创建挂载目录
mkdir /data/static /mydata/nginx
复制容器里的conf到宿主机。6dd4380ba708为CONTAINER ID
docker cp 6dd4380ba708:/etc/nginx/nginx.conf /data/nginx/conf
停止容器
docker stop 6dd4380ba708
删除容器
docker rm 6dd4380ba708
重新启动一个有挂载目录的镜像
docker run -d -p 80:80 -p 9093:9093 --name nginx -v /root/shop/html:/usr/share/nginx/html -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/logs:/var/log/nginx -v
/etc/pki/nginx:/etc/pki/nginx nginx

参数说明

  • -name nginx-test 容器名称,关闭或者启动可以使用该名称
  • -p8080:80 端口映射 ,将本地 80 端口映射到容器内部的 80 端口。
  • -d nginx 表示容器一直在运行

7、使用docker部署应用

1.首先需要准备一个dockerfile的文件,文件内容如下:

#FROM openjdk:8-jdk-alpine
#ADD *.jar app.jar
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER 1775852007 <1775852007@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD trace-chain-1.0-SNAPSHOT-exec.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
#VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
#项目的 jar 文件作为 “app.jar” 添加到容器的
#ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
#
#如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。

2.将dockerfile文件与springboot项目的jar包放在同一个文件夹中

3.然后开始制作镜像trace-chain-1.0-SNAPSHOT-exec

docker build -t springboot-docker .

4.使用docker images查看镜像是否已经生成

5.配置springboot项目,启动容器

docker run -d -p 8087:8087 8493c1f0592c
#-d参数是让容器后台运行
#-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8087(项目中端口配置的是8087)端口
#使用images镜像的IMAGE ID
#或者docker run -d -p 8028:8028 --name trace-chain trace-chain

6.最后使用docker ps -a,查看一下是否已经启动。

#1.查看镜像id:
  docker images
#2.查看容器运行情况:
  docker ps //或者docker container ls
#如果存在运行的容器,先停止(id)
  docker stop containerid
#查看所有容器(-a表示查看所有)
  docker ps -a //或 docker container ls -a
#3.删除容器
  docker rm containerid
#再次查看所有容器,可以看到容器已被删除
  docker ps -a
#4.此时可以删除镜像了
  docker rmi imageid
 #再次镜像查看,可以看到镜像已被删除
  docker images
#5.总结
#(1)、删除镜像前需保证没有使用该镜像的容器存在,如果存在容器并且运行的话,需先停止该容器,然后删除该容器
#(2)、删除容器需在删除镜像之前,删除容器命令为docker rm containerid,删除镜像命令为docker rmi          imageid

8、使用dockers部署redis集群

#创建网卡
docker network create redis --subnet 172.38.0.0/16
--------------------------------------------------------
#通过脚本创建6个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat  << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379 
bind 0.0.0.0
cluster-enabled yes 
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
#创建完后可查看创建的配置文件信息
cd /mydata/.......................
#到conf文件里面的redis.conf
cat redis.conf
--------------------------------------------------
#启动刚刚创建的6个redis(redis-1~6)
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
    -v /mydata/redis/node-6/data:/data \
    -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
    -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#查看启动的redis
docker ps
--------------------------------------------------
#创建集群
#首先先进入其中的一个redis
docker exec -it redis-1 /bin/sh
#连接完后可创建集群
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
#创建完集群后连接集群查看相关信息
#连接集群
redis-cli -c
#查看集群相关信息
cluster info
#查看nodes
cluster nodes

9、使用docker部署jenkins及在jenkins上部署项目

#!/usr/bin/env bash
app_name='kami'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -di --name=${app_name} -p 7070:7070 test/${app_name}:1.0-SNAPSHOT
echo '----start container----'

#启动jenkins
docker run -di --name=jenkins -p 8080:8080 -v /mydata/jenkins_home/:/var/jenkins_home jenkins/jenkins:lts
#jenkins中kami-mall-web前端项目部署shell脚本
mv /mydata/jenkins_home/workspace/kami-mall-web/dist.tar.gz /mydata/nginx/html
cd /mydata/nginx/html
rm -rf ./dist
tar -zxvf ./dist.tar.gz
mv ./dist/* .
rm -fr ./dist.tar.gz
rm -rf dist
----------------------------------------------------------------------------
#jenkins中kami-mall后端项目shell部署脚本
docker stop kami-mall
docker rm kami-mall
docker rmi kami-mall
rm -rf mall-1.0-SNAPSHOT.jar
cp -rf /mydata/jenkins_home/workspace/kami/target/mall-1.0-SNAPSHOT.jar /root
docker build -t kami-mall .
docker run -d -p 7070:7070 --name kami-mall kami-mall

10、docker搭建ftp服务器

docker run -d -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -v /ftpfile:/home/vsftpd -e FTP_USER=shop -e FTP_PASS=Shop@123 -e PASV_ADDRESS=121.36.255.93 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd

猜你喜欢

转载自blog.csdn.net/weixin_48453772/article/details/120062136