docker相关
docker安装
- 使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 设置使用国内镜像源
- 修改或新增 /etc/docker/daemon.json
vim /etc/docker/daemon.json
- 添加内容(添加三个源 阿里云,网易, Docker 官方中国区)
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://registry.docker-cn.com"]
}
- 重启docker
systemctl restart docker.service
docker安装mysql
参考地址 https://www.runoob.com/docker/docker-install-mysql.html
- 查看仓库MySQL版本
docker search mysql
- 安装对应版本(不指定默认最新版)
docker pull mysql
- 查看镜像
docker images
- 启动容器
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=YAFD.2020 mysql
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=YAFD.2020:设置 MySQL 服务 root 用户的密码。
- 查看是否启动成功
docker ps
- node连接报错
{ Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by
server; consider upgrading MySQL client
原因8.0mysql引入了caching_sha2_password模块作为默认身份验证插件,nodejs还没有跟进
- 解决方法:
# 进入容器
docker exec -it mysql bash
# 登录mysql
mysql -u root -p
# 授权
GRANT ALL ON *.* TO 'root'@'%';
# 刷新权限
flush privileges;
# 更新加密规则:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 更新root用户密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新
flush privileges;
docker安装redis
参考地址 https://www.runoob.com/docker/docker-install-redis.html
https://hub.docker.com/_/redis?tab=description&page=1&ordering=last_updated
redis主从和哨兵模式 https://www.cnblogs.com/tomkluas/p/12682489.html
docker pull redis // 拉取最新镜像
docker images // 查看镜像
docker run -itd --name redis --restart always -p 6379:6379 -v /root/redis/:/usr/local/etc/redis redis // 运行redis
docker ps // 查看容器运行信息
docker exec -it redis /bin/bash //通过 redis-cli 连接测试使用 redis 服务。
创建redis主从
docker安装mongodb
https://www.runoob.com/docker/docker-install-mongodb.html
//www.greatytc.com/p/2181b2e27021
studiot 3T下载地址:https://studio3t.com/download/
docker pull mongo
docker run -d -p 27017:27017 -v /root/mongo/config:/data/configdb -v /root/mongo/db:/data/db --name mongo mongo --auth
$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
// 修改用户密码
db.changeUserPassword('admin','password');
- 备份
mkdir /root/backup/mongodb
tar cvf /root/backup/mongodb/$(date +%Y%m%d%H%M%S).tar /root/mongo
// 还原
tar xvf /root/backup/mongodb/backup.tar -C /root/mongo
cp -r 解压的文件 docker映射文件
- 备份脚本
#!/bin/bash
LOG_DIR=/root/backup/log/mongodb
SOURCE_DIR=/root/mongo
BACKUP_DIR=/root/backup/mongodb
REMOTE_IP=192.168.1.98
REMOTE_USER=root
REMOTE_DIR=/data/opt/backup/mongodb
function log()
{
echo "[ `date '+%Y-%m-%d %H:%M:%S'` ] $1"
}
# 备份
function main(){
d=`date "+%Y%m%d%H%M%S"`
fname=${BACKUP_DIR}/backup_${d}.tgz
log "开始备份 ${fname}"
tar -zcf ${fname} ${SOURCE_DIR}
#scp ${fname} $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
#log "备份到远程成功"
log "开始删除7天前的备份"
find ${BACKUP_DIR} -type f -atime +7 |xargs -t -i rm {}
log "删除完毕"
}
main >> ${LOG_DIR}/backup.log 2>&1
// 每4小时备份一次
分 时 天 月 周
0 */4 * * * sh /root/backupMongodb.sh
docker安装nginx
https://www.runoob.com/docker/docker-install-nginx.html
https://www.cnblogs.com/yjlch1016/archive/2019/11/24/11923695.html
https://blog.csdn.net/weixin_40461281/article/details/92586378
# 拉取Nginx官方镜像
docker pull nginx
#先让容器在后台运行,并取个别名为nginx,此时还没有修改配置文件
docker run --name nginx -d nginx
# 查看nginx-test容器id
docker ps -a
#查看容器内部的配置文件
docker exec nginx ls /etc/nginx
#复制容器内部的配置文件到宿主机,不用事先创建/root/nginx目录
docker cp -a nginx:/etc/nginx/ /root/nginx
#进入/root目录
cd
#给/root/nginx目录赋予最高权限
chmod -R 777 nginx
#删除nginx容器,-f参数是强制删除运行中的容器
docker rm -f nginx
#重新运行容器,并挂载配置文件,映射端口
#这样下次就可以直接修改宿主机的配置文件,然后docker restart nginx重启容器
docker run -p 80:80 --restart always --name nginx -v /root/nginx/:/etc/nginx/ -d nginx
docker run -d -p 80:80 --name nginx -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log -v /root/nginx/:/etc/nginx/ -d nginx
docker run -d -p 80:80 -p 443:443 --name nginx --restart always -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx:/etc/nginx -v /root/nginx/logs:/var/log/nginx -v /root/nginx/ssl:/etc/nginx/ssl nginx
#开放宿主机防火墙的80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
#访问
浏览器输入主机ip
docker 安装Jenkins
# 拉取镜像
docker pull jenkins/jenkins // 第一个官方镜像安装插件有可能会报错
# 启动镜像
#查看容器内部的配置文件
docker exec jenkins ls /var/jenkins_home/
#复制容器内部的配置文件到宿主机,不用事先创建/root/nginx目录
docker cp -a jenkins:/var/jenkins_home/ /root/jenkins
#给/root/nginx目录赋予最高权限
chmod -R 777 jenkins
#删除容器,-f参数是强制删除运行中的容器
docker rm -f jenkins
#重新运行容器,并挂载配置文件,映射端口
#这样下次就可以直接修改宿主机的配置文件,然后docker restart jenkins重启容器
docker run -itd -p 8080:8080 -p 50000:50000 --restart always --name jenkins --privileged=true -v /root/jenkins:/var/jenkins_home/ jenkins/jenkins
Jenkins部署node项目
-
git拉取源码失败 : 使用用户名密码方式认证的时候URL地址要用https方式而不是ssh。
- yarn安装
npm install -g yarn
linux 安装nvm,通过nvm安装node
更换下载源(默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢):shell下直接运行:
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
npm国内源 https://blog.csdn.net/chenbingzhao/article/details/110092280
临时使用npm --registry https://registry.npm.taobao.org install express
持久使用npm config set registry https://registry.npm.taobao.org
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
nvm list // 查看当前版本
nvm // 查看所有命令
nvm ls-remote // 查看所有可安装版本
nvm install version // 安装对应的版本
版本管理工具
禅道
docker pull idoop/zentao
mkdir -p /data/zbox && \
docker run -d -p 8081:80 -p 3307:3306 \
-e ADMINER_USER="root" -e ADMINER_PASSWD="123456" \
-e BIND_ADDRESS="false" \
-v /data/zbox/:/opt/zbox/ \
--add-host smtp.764162156.qq.com:163.177.90.125 \
--name zentao-server \
idoop/zentao:latest