Build a basic project environment - install docker, mysql, redis and clusters, nginx, run springboot service after building ftp

Install docker, mysql, redis and cluster, nginx, run springboot service after setting up ftp

1. Use the official script installation command to install

The installation command is as follows:

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

2. Start docker

If you are a root user, you can directly run the following command

systemctl start docker

Otherwise, you need to execute the following command

sudo systemctl start docker

3. Check whether docker starts successfully

Enter the following command to see if there is a docker process

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. Use docker to install 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

Next, you can use navicat to connect to mysql.

5. Use docker to install 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. Install nginx using docker

1. Pull the latest nginx image

Here we pull the latest progress.

docker pull nginx:latest

2. View the image that has been pulled

docker images

3. Run the container

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

Parameter Description

  • -name nginx-test container name, this name can be used when shutting down or starting
  • -p8080:80 port mapping, mapping local port 80 to port 80 inside the container.
  • -d nginx means the container is always running

7. Use docker to deploy applications

1. First, you need to prepare a dockerfile file, the content of which is as follows:

#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. Put the dockerfile file and the jar package of the springboot project in the same folder

3. Then start to make mirror trace-chain-1.0-SNAPSHOT-exec

docker build -t springboot-docker .

4. Use docker imagesto check whether the image has been generated

5. Configure the springboot project and start the container

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. Finally docker ps -a, check to see if it has been started.

#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. Use dockers to deploy redis cluster

#创建网卡
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. Use docker to deploy jenkins and deploy projects on 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 builds ftp server

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

Guess you like

Origin blog.csdn.net/weixin_48453772/article/details/120062136