备注:
   nginx  unit  nginx 开源的新的nginx 开发平台,但是说白了,个人感觉一般,而且官方文档也不是很好,
api 接口目前暂时文档比较。。。。,以前写过虚拟机&&物理机安装部署的方式,今天写一个使用docker
进行安装部署的方式,同时添加golang语言的使用,算是比较全了,毕竟大部分公司再用容器。
 
1. 参考项目
https://github.com/rongfengliang/nginx-unit-docker-demo
2. 项目说明
a. 项目结构

├── Dockerfile   // docker 构建
├── Jenkinsfile // jenkins 构建
├── README.md
├── app.go // golang 语言支持
├── docker-compose.yml // docker-compose 构建
├── run.sh // 应用配置,通过rest 接口
├── start.json // 应用配置 php && golang
└── website
└── index.php // php 语言 b. 代码说明(使用docker多阶段构建) Dockerfile docker 构建 FROM golang:stretch AS build-env
RUN apt-get update
# RUN apt-get install -y build-essential
RUN git clone https://github.com/nginx/unit.git /go/src/github.com/nginx/unit ## 注意分之的版本 必须和你的unit 一致,不然报错,这个觉得不好,可能和目前生产可用性有关系吧 ## 这个主要是golang sdk 的构建
RUN cd /go/src/github.com/nginx/unit && git checkout tags/1.1 && ./configure && ./configure go && make go-install ADD . /go/src/github.com/rongfengliang/nginx-unit-go
RUN cd /go/src/github.com/rongfengliang/nginx-unit-go && go build -o /appdemo app.go FROM nginx/unit:1.1-full
WORKDIR /appdemo
ADD start.json /appdemo/start.json
COPY website /appdemo/website/
COPY --from=build-env /appdemo /appdemo/website/appdemo
EXPOSE 8080 8000 8081
CMD ["/usr/sbin/unitd", "--no-daemon","--control", "0.0.0.0:8000"] Jenkinsfile jenkinspipeline 构建 pipeline {
agent {
node {
label 'docker-65'
}
}
stages {
stage('docker-compose build') {
steps {
sh 'docker-compose build'
}
}
stage('docker-compose run ') {
steps {
sh 'docker-compose up -d'
}
}
stage('deploy service') {
steps {
sh './run.sh'
}
}
}
} app.go golang 支持 package main import (
"math"
"net/http"
"nginx/unit" ## 注意unit 版本,感觉做的有点不好,因为版本因为无法发布服务
) func term(ch chan float64, k float64) {
ch <- 4 * math.Pow(-1, k) / (2*k + 1)
} func handler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("appdemorong"))
} func main() {
http.HandleFunc("/", handler)
//http.ListenAndServe(":8080", nil)
unit.ListenAndServe(":8089", nil)
} docker-compose.yml 比较简单,不用说了 version: "3"
services:
nginx-unit:
build:
context: .
image: myunit
ports:
- "9080:8080"
- "9000:8000"
- "9001:8081" run.sh 服务注册的shell
#!/bin/sh
curl -X PUT -d @$PWD/start.json http://localhost:9000 start.json 服务配置的说明 {
"listeners":{
"*:8080":{
"application":"phpindex"
},
"*:8081":{
"application":"golang"
}
},
"applications":{
"phpindex":{
"type":"php",
"processes":30,
"root":"/appdemo/website",
"index":"index.php"
},
"golang":{
"type":"go",
"processes":30,
"working_directory": "/appdemo/website",
"executable": "appdemo"
}
}
} website/index.php php 语言支持 <?php
phpinfo()
?>
3. 构建&&启动
docker-compose build
docker-compose up -d
4. 发布服务
./run.sh
5. 效果
 
a. 注册的服务列表
b. golang 服务访问
 
c.  php 服务访问
 
6. 扩展
多版本切换以及多版本也比较简单,就是服务注册配置文件的处理,总的来说,挺好的功能,但是在微服务,以及service mesh 的大趋势之下,就显得没有那么好的,
也只是个人的观点
7. 参考资料
http://unit.nginx.org/
https://github.com/rongfengliang/nginx-unit-docker-demo
 
 
 
 

nginx-unit docker 运行以及php &&golang 简单使用的更多相关文章

  1. docker 运行nginx并进入容器内部、端口映射

    一.docker运行容器 1.从网易蜂巢镜像仓库下载nginx镜像 : 2.拉取镜像到本地,并查看本地的镜像: $ docker pull hub.c..com/library/node:latest ...

  2. docker运行nginx为什么要使用 daemon off

    再返回Nginx的docker仓库仔细查看说明,其实是有说明的 /捂脸- 就是在CMD后面加上exec nginx -g 'daemon off;',如下: command: /bin/bash -c ...

  3. docker 运行容器,安装Nginx

    ########################################## #运行容器 #安装Nginx #搜索.下载镜像 docker search nginx docker pull n ...

  4. docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  5. Docker 拉取Nginx镜像 和运行

    Docker 镜像拉取 docker pull [OPTIONS] NAME[:TAG|@DIGEST] 镜像拉取命令 OPTIONS说明: -a :拉取所有 tagged 镜像 --disable- ...

  6. nginx Unit 服务器

    转自: https://github.com/nginx/unit/pull/18/ 感谢: https://www.v2ex.com/t/389528 English 简体中文 繁體中文 NGINX ...

  7. 在 Azure 上使用 Docker运行 Mono

    Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...

  8. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  9. Docker初步认识安装和简单实例

    前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...

随机推荐

  1. 微信小程序-----安装,编写第一个小程序和运行到手机端

    第一步: 微信公众平台注册账号,并选择小程序,网址:mp.weixin.qq.com 填写相关信息,如:主体类型(个人或者企业) AppID  在开发中都是用的到的,服务器域名在网络请求也是用的到的. ...

  2. 二十六 Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理

    downloadmiddleware介绍中间件是一个框架,可以连接到请求/响应处理中.这是一种很轻的.低层次的系统,可以改变Scrapy的请求和回应.也就是在Requests请求和Response响应 ...

  3. 51nod-1179-最大的gcd(数学)

    1179 最大的最大公约数  题目来源: SGU 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出N个正整数,找出N个数两两之间最大公约数的最大 ...

  4. 普通for循环遍历LinkedList弊端

    java开发过程中,用到的最多的List集合就属ArrayList与LinkedList.对于ArrayList的遍历,通常是下面的方法: public static void main(String ...

  5. 使用群晖NAS:配置Git server

    1.首先在群晖的DSM的控制面板中创建一个用户例如是Git_test(我给了管理员权限) 2.在套件中心安装 Git server 3.打开Git server 勾选用户 Git_test 4.在控制 ...

  6. 自研发RPC调用框架

    自主研发设计RPC远程调用框架,实现服务自动注册,服务发现,远程RPC调用,后续实现服务负载均衡 主要包括:客户端服务,服务端,服务发现,服务注册 github地址:https://github.co ...

  7. ThinkPHP5.0完全开发手册.【CHM】下载

    ThinkPHP5已经出来很长时间了,官网也没有提供CHM格式的手册下载只有PDF格式的,我根据官网的在线手册制作了一个离线版的ThinkPHP5.0完全开发手册.CHM格式的文档.

  8. [Github] 本地git push免用户名和密码的配置

    在终端通过git config --global命令进行配置 git config --global user.email "xxx@xxmail.com" git config ...

  9. SVN 安装配置详解,包含服务器和客户端,外带一个项目演示,提交,更改,下载历史版本,撤销

    本次要介绍的是svn版本管理工具包含2个: 服务器端:visualsvn server 下载地址为:https://www.visualsvn.com/server/download/   此处演示的 ...

  10. UNIX 环境高级编程 文件和目录

    函数stat , fstat , fstatat , lstat stat函数返回与此文件有关的信息结构. fstat函数使用已打开的文件描述符(而stat则使用文件名) fstatat函数 为一个相 ...