nginx

03、Docker Compose入门

眉间皱痕 提交于 2021-02-20 03:25:37
简介: Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件 docker-compose.yml ,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。 # 启动所有服务 $ docker-compose up # 关闭所有服务 $ docker-compose stop 安装: Mac 和 Windows 在安装 docker 的时候,会一起安装 docker compose。Linux 系统下的安装参考 官方文档 查看是否安装成功: $ docker-compose --version 使用: 一份标准的docker-compose.yml文件应该包含version、services、networks三大部分,其中最关键的就是services和networks两个部分. docker运行命令转换成docker-compose.yml实例 docker命令执行2个镜像: docker run -d -p 9020:9020 --sysctl net.core.somaxconn=4096 registry.leyantech.com/infra/wp-api docker run -d -p 88:80 registry.leyantech.com/infra

docker跨主机通信-手工版

Deadly 提交于 2021-02-19 22:46:42
#A主机 192.168.100.120# 在主机A中创建一个子网,范围是10.52.100.2->10.52.100.254 docker network create --subnet=10.52.100.0/24 snake120 运行一个centos7的容器作为客户端 docker run --name centos -dit --network snake120 --ip 10.52.100.2 uhub.service.ucloud.cn/pub021/centos:7.4.1708 增加路由指向目标地址所在的宿主机,-net 目标IP , gw 网关IP ,默认eth0网卡 route add -net 10.52.121.0 netmask 255.255.255.0 gw 192.168.100.121 服务端开放转发规则,用于B主机向A主机通信 iptables -A FORWARD -j ACCEPT #B主机 192.168.100.121# 在主机B中创建一个子网,范围是10.52.121.2->10.52.121.254 docker network create --subnet=10.52.121.0/24 snake121 运行一个目标服务 docker run --name nginx -dit --network snake121 --ip

通过gitee管理hexo管理发布内容

风格不统一 提交于 2021-02-19 22:10:06
想法 最原始的办法是通过ftp或者winscp这样的工具能实现内容上传,但是不够简化,首先你要登录服务器,然后找到相应文件夹进行更新。 第二种方法是先更新gitee仓库,然后通过ssh登录服务器,然后从仓库pull下所有代码 第三种方法是不需要gitee仓库,直接在服务器建一个空仓库,然后把本地发布文件push到服务器仓库上 上面3种方法,第1种最原始,第2种比较繁琐,第3种简单可操作,但是第3种有一个问题,就是代码管理全部在服务器上,可视性比较差,能不能通过gitee管理代码,包括原始文件,然后一旦用户push,通过钩子函数,触发服务器主动拉取,这样,所有操作都简化为了本地的一个git push指令。说干就干,问了一圈度娘,果然高手在民间,几个关键步骤都有相应的帖子介绍。 第一步 建立hexo空仓库 本地把项目文件统统push上去,除了node_module文件夹。这样,项目文件也不会丢失,便于以后复用。 第二步 建立服务器到hexo仓库私钥通信 1. 创建ssh连接密钥 参看 https://gitee.com/help/articles/4181#article-header0 none ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... 产生两个文件:id

每天学一个 Linux 命令(39):tar

主宰稳场 提交于 2021-02-19 20:54:13
点击下方“ 民工哥技术之路 ”,选择“设为星标” 回复“ 1024 ”获取独家整理的学习资料! 昨日推荐: 每天学一个 Linux 命令(38):vi/vim 命令简介 tar 命令用于打包、压缩与解压压缩包文件。 tar 命令常常用于打包、压缩某些文件或目录,也可以添加新文件到归档文件中。Tar 代表的是磁带存档,是一种归档的文件格式,早期用于将文件归档到磁带备份存储。现可以用于收集、分发、归档文件,还可以保留文件原有的属性,如:用户和组权限,访问和修改日期以及目录结构。 语法格式 tar [OPTIONS] [FILE] 选项说明 -A #新增文件到已经存在的归档文件 -B #设置区块大小 -c #建立新的归档文件 -C #将压缩的文件解压到指定的目录下 -d #记录文件的差异 -x #解压或提取归档文件内容 -t #列出备份文件的内容 -z #通过gzip命令来压缩/解压缩文件,文件名一般为 xx.tar.gz -Z #通过compress命令处理备份文件 -f #指定备份文件 -v #显示命令执行过程 -r #添加新文件到已经压缩的文件中 -u #添加改变了和现有的文件到已经存在的压缩文件 -j #通过bzip2命令来压缩/解压缩文件,文件名一般为xx.tar.bz2 -v #显示操作过程; -k #保留原有文件不覆盖 -m #保留文件不被覆盖 -w #确认压缩文件的正确性

php跨域问题记录

岁酱吖の 提交于 2021-02-19 10:49:02
记录跨域问题 一、问题 在控制层加了如下代码: header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN'] ); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Allow-Headers: X-Requested-With,Content-Type,Accept'); 打开chrome的network里的response,没有这几个值~ 但是同样的代码我在本地另一个项目里是OK的,项目环境是Nginx做了层代理,实际用的是PHP当Apache模块的方式,就开始怀疑: 输出时框架限制了 Nginx/Apache限制了header(ps:我们项目是用Nginx当了反向代理,PHP当Apache模块) 灵魂拷问:PHP输出时这些header是怎么返回的? 二、解决 1.框架 用xdebug跟了下,没看到框架里有任何限制不能更改header 2.web服务器 看到response每次返回的都一样,以为是运维控制了返回的选项,不能随意添加,和运维同事沟通了下,发现确实是不能随意添加header头,窃喜以为找到了原因。然而另一个同事说加的跨域允许是OK的;Nginx的conf里加的proxy

面试官问:你说说Redis的几个过期策略?

这一生的挚爱 提交于 2021-02-19 10:47:41
在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期。当设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的。 设置过期时间 expire key time(以秒为单位) 这是最常用的方式 setex(String key, int seconds, String value) 字符串独有的方式 除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间如果没有设置时间,那缓存就是永不过期如果设置了过期时间,之后又想让缓存永不过期,使用persist key 三种过期策略 定时删除 在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除 优点: 保证内存被尽快释放 缺点: 若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重 懒汉式式删除 key过期的时候不删除,每次通过key获取值的时候去检查是否过期,若过期,则删除,返回null。 优点: 删除操作只发生在通过key取值的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的

Docker——网络和存储(数据卷)

元气小坏坏 提交于 2021-02-19 10:46:11
iptables -t nat -vnL |grep docker 查看docker桥接网卡:brctl show 本地端口随机映射到docker容器的80端口上: docker run -d -P nginx 查看日志:docker logs 容器_id nginx 必须放在前台运行 本地端口指定映射到docker容器的80端口上:#81是宿主机端口,80是dokcer容器里面的端口 docker run -d -p 81:80 nginx 存储: 数据卷:所有的docker都能连接到上面 挂载一个 /data0到centos(dokcer容器)上: docker run -it --name volume-test1 -v /data0 centos 相当于nfs挂载一样 查看挂载信息:docker inspect 容器_id 指定目录挂载:docker run -it -v /opt:/opt centos 这是docker容器的/opt目录下内容 这是物理挤/opt下目录内容 挂载到指定目录并且指定权限:docker run -it -v /data0:/data0:rw centos 但是 docker容器那面还是没权限这是因为centos的安全模块seliunx限制 1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数: docker

HTTPS on Elastic Beanstalk (Docker Multi-container)

家住魔仙堡 提交于 2021-02-19 08:38:38
问题 I've been looking around and haven't found much content with regards to a best practice when it comes to setting up HTTPS/SSL on Amazon Elastic Beanstalk with a Multi-container Docker environment. There is a bunch of stuff when it comes to single container configuration, but nothing when it comes to multi-container. My Dockerrun.aws.json looks like this: { "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "app-frontend", "host": { "sourcePath": "/var/app/current/app-frontend" } }, { "name":

nginx responds with 404 Not Found (Single Page App)

与世无争的帅哥 提交于 2021-02-19 07:48:25
问题 I have a Single Page Application with regular Browser Router (without hash). Whenever someone navigates through page and hits refresh button nginx tries to find file on this path. So if someone is on mypage.com/about nginx looks for about file and responds with 404 Not Found. How to fix this issue? I'm thinking about specifying a location with wildcard - mypage.com/* except /api tho, because every backend endpoint in this app starts with api . How to match all paths except one? This is how my

Kubernetes NGINX Ingress changes HTTP request from a POST to a GET

╄→гoц情女王★ 提交于 2021-02-19 07:18:05
问题 I'm using Kubernetes that is bundled with Docker-for-Mac. I'm trying to configure an Ingress that routes http requests starting with /v1/ to my backend service and /ui/ requests to my Angular app. My issues seems to be that the HTTP method of the requests are changed by ingress (NGINX) from a POST to a GET. I have tried various rewrite rules, but to no avail. I even switched from Docker-for-Mac to Minikube, but the result is the same. If I use a simple ingress with no paths (just the default