docker安装jenkins

1.拉取镜像
docker pull jenkins/jenkins:lts //最新版

2.创建容器脚本

mkdir -p /data/docker-jenkins/jenkins_home   //创建映射上当

chown -R 1000:1000 /data/docker-jenkins   //修改权限,默认jenkins用户ID为1000

docker run -d -v /data/docker-jenkins/jenkins_home:/data/docker-jenkins --name jenkins jenkins/jenkins:lts
//run参数可选:-p 8080:8080   -p 50000:50000,因为我自己安装的nginx也是容器中,所以不需要转发宿主机端口

3.加入网络

docker network connect --ip=172.10.1.204 prod jenkins

4.添加nginx配置

upstream jenkins_pool{
    server jenkins:8080;
}

//jenkins与nginx在同一网络中,所以直接使用别名转发

5.访问网站
打开网站,需要输入初始化密码:

 cat /data/docker-jenkins/jenkins_home/secrets/initialAdminPassword

6.安装建议插件即可
如果没安装上,没关系,continue即可

7.安装插件
1.如果在初始化的时候未安装上,按提示一步一步安装,可能是依赖的问题,从最底层依赖开始安装
2.安装Echart-API,Pipline

php-fpm的docker镜像有kdevtmpfs挖矿病毒

CPU 使用率基本上每核都达到了 100%,
pstree -a |grep -C 10 kdevtmpfs
查看到在php-fpm容器下
微信图片_20210408142752

查找位置
find / -name kdevtmpfsi
定位容器
`
$ docker ps -q | xargs docker inspect –format ‘{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}’ | grep “填写所在的容器id”

`

删除容器,重新构建
1.官方镜像为什么会有挖矿程序
2.是不是因为php代码程序的原因?
3.服务器密码已经被破解?
4.因为映射了9000端口到宿主机且端口开放了外网?


参照
https://fleey.cn/archives/76.html
https://blog.51cto.com/13447608/2472711?source=dra

docker中gitlab配置smtp的qq邮箱

gitlab管理页面,现不提供相关的可视化配置。需要在配置文件中修改

vi config/gitlab.rb

### Email Settings,如果是465端口,ssl的配置一定要配置
gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 端口不可以选择587,测试过会发送邮件失败
gitlab_rails['smtp_user_name'] = "test@qq.com" # 你的邮箱账号
gitlab_rails['smtp_password'] = "1324dasd" # 授权码,不是密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'test@qq.com' # 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影响 

docker exec -it gitlab /bin/bash

2、让配置文件生效
gitlab-ctl reconfigure
##gitlab-ctl restart

3、测试配置邮箱服务是否可以正常发送邮件
gitlab-rails console
irb(main):001:0> 
Notify.test_email('xxx@qq.com', 'Message Subject test', 'Message Body  test').deliver_now

netbeans使用xdebug调试

参考:https://www.cnblogs.com/sochishun/p/7455032.html
1.安装:netbeans,phpstudy_pro

2.修改php.ini:
找到phpstudy目录下php文件下的php.ini,最后加上

[xdebug]
zend_extension = "php_xdebug.dll"
xdebug.auto_trace = on
xdebug.auto_profile = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.trace_output_dir = "xdebug_log"
xdebug.profiler_output_dir = "xdebug_log"
xdebug.remote_enable = 1
xdebug.remote_mode=req
; 注意,remote_host的值如果填写localhost不能用,则填写127.0.0.1
xdebug.remote_host=127.0.0.1
; 注意,端口和idekey要与netbeans中配置一样
xdebug.remote_port=9001
xdebug.idekey=netbeans-xdebug

phpinfo()打印查找是否有xdebug组件。

3.netbeans设置
1231321d

4.启动调试
1231321d
5.分步调试
1231321d
左侧可以打断点,点击最上面的红色按钮单步调试
鼠标放在参数上会提示类型和值
断点在的话,访问目标页面,会自动命中断点

php使用Docker容器安装时,遇到的问题

安装没有独立为每一个应用安装docker容器,而是使用一个公共的容器,通过挂载www目录的方式

访问mysql数据库提示 SQLSTATE[HY000] [2002] Connection refused
如果是本机安装了mysql,没用docker
host指定为当前docker网络的网关地址,如:172.10.1.1
如果是docker实地mysql,
直接使用docker网络中的mysql指定的IP,如:172.10.1.121

访问mysql数据库提示 SQLSTATE[HY000] [2002] Connection refused
没找到问题,但重启php的容器即可

nginx中upstream节点找不到对应的ip或者端口
upstream节点ip使用容器的别名或者分配能容器的ip
upstream节点的端口使用容器的端口,而不是宿主的端口

nginx的root路径
使用挂载后的容器路径而不是宿主的路径

nginx的配置conf文件
挂载nginx可以指定容器的conf目录

nginx的配置ssl(cert)文件**
挂载nginx时指定容器的cert目录 如/etc/nginx/cert/xxx.pem

nginx的日志
默认access.log输出到docker logs nginx下
挂载nginx时指定容器的logs目录

经常提示Cannot send session cache limiter **
session.auto_start = 0默认为0的原因
进入php-fpm容器的目录/usr/local/etc/php
cp php.ini-Development php.ini
sed -i ‘s/session.auto_start = 0/session.auto_start = 1’ php.ini
**kdevtmpfs
占用大量cpu
php:5.6-fpm官方镜像被修改了,有挖矿程序

git使用代理

1.clone操作proxy(因为还可能没有库,不能config)

//只使用一次:#使用http://协议
git clone -c http.proxy="http://127.0.0.1:1080" https://github.com/xxx/xxx.git

2.配置当前git库proxy(当前)

//#走socks:代理在本机地址是127.0.0.1 代理端口是1080
git config http.proxy 'socks5://127.0.0.1:1080'

//#配置git库走http:代理在本机地址是127.0.0.1 代理端口是1080
git config http.proxy 'http://127.0.0.1:1080'

//取消当前proxy配置 git config  --unset http.proxy

3.配置所有git库proxy(全局)

//#配置git库走socks:代理在本机地址是127.0.0.1 代理端口是1080
git config --global http.proxy 'socks5://127.0.0.1:1080'

//#配置git库走http:代理在本机地址是127.0.0.1 代理端口是1080
git config --global http.proxy 'http://127.0.0.1:1080'

//取消全局proxy配置 git config --global --unset http.proxy

webapi,Action提供的接收参数的方式:【Fromxxxx】

1.通过ActionArgument
2.通过QueryParams,直接写参数,默认FromQuery特性
3.通过QueryParams,使用对象,同时声明FromQuery特性

https://www.iaspnetcore.com/blog/blogpost/594960eb84cd453380655bc9/aspnet-core-mvc-model-binding-fromheader-fromquery-fromroute-fromform-usage-scenarios-and-principles

很多人搞不清FromQuery和FromRoute的区别。本文举例解释一下。

FromRoute
FromQuery
FromForm
FromBody
FromHeader
FromServices

[FromXXX] 是告诉后台的控制器在获取前台页面传递过来的参数是放在请求内容的哪个地方的,从而确定从哪里获取参数信息。

从前端发过来的请求,由三个部分组成

Request.url

Request.Header

Reques.Body

参数可能放在这三个地方之一。[FromXXX]即对应了这三处地方。