安装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
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 java:8
MAINTAINER 1775852007 <1775852007@qq.com>
VOLUME /tmp
ADD trace-chain-1.0-SNAPSHOT-exec.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
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
6.最后使用docker ps -a ,查看一下是否已经启动。
docker images
docker ps //或者docker container ls
docker stop containerid
docker ps -a //或 docker container ls -a
docker rm containerid
docker ps -a
docker rmi imageid
docker images
8、使用dockers部署redis集群
docker network create redis --subnet 172.38.0.0/16
--------------------------------------------------------
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/.......................
cat redis.conf
--------------------------------------------------
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
docker ps
--------------------------------------------------
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
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----'
docker run -di --name=jenkins -p 8080:8080 -v /mydata/jenkins_home/:/var/jenkins_home jenkins/jenkins:lts
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
----------------------------------------------------------------------------
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
|