nginx-unit docker 运行以及php &&golang 简单使用
https://github.com/rongfengliang/nginx-unit-docker-demo
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()
?>
docker-compose build
docker-compose up -d
./run.sh



多版本切换以及多版本也比较简单,就是服务注册配置文件的处理,总的来说,挺好的功能,但是在微服务,以及service mesh 的大趋势之下,就显得没有那么好的,
也只是个人的观点
http://unit.nginx.org/
https://github.com/rongfengliang/nginx-unit-docker-demo
nginx-unit docker 运行以及php &&golang 简单使用的更多相关文章
- docker 运行nginx并进入容器内部、端口映射
一.docker运行容器 1.从网易蜂巢镜像仓库下载nginx镜像 : 2.拉取镜像到本地,并查看本地的镜像: $ docker pull hub.c..com/library/node:latest ...
- docker运行nginx为什么要使用 daemon off
再返回Nginx的docker仓库仔细查看说明,其实是有说明的 /捂脸- 就是在CMD后面加上exec nginx -g 'daemon off;',如下: command: /bin/bash -c ...
- docker 运行容器,安装Nginx
########################################## #运行容器 #安装Nginx #搜索.下载镜像 docker search nginx docker pull n ...
- docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)
docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...
- Docker 拉取Nginx镜像 和运行
Docker 镜像拉取 docker pull [OPTIONS] NAME[:TAG|@DIGEST] 镜像拉取命令 OPTIONS说明: -a :拉取所有 tagged 镜像 --disable- ...
- nginx Unit 服务器
转自: https://github.com/nginx/unit/pull/18/ 感谢: https://www.v2ex.com/t/389528 English 简体中文 繁體中文 NGINX ...
- 在 Azure 上使用 Docker运行 Mono
Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
目录 [TOC] 1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...
- Docker初步认识安装和简单实例
前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...
随机推荐
- 关于 MongoDB 复制集
为什么要使用复制集 1.备份数据通过自带的 mongo_dump/mongo_restore 工具也可以实现备份,但是毕竟没有复制集的自动同步备份方便. 2.故障自动转移部署了复制集,当主节点挂了后, ...
- Integer 类型数值判断相等的坑
题目: public static void main(String[] args) { Integer a = 100, b = 100; Integer c = 150, d = 150; Sys ...
- DSP基础学习-ADC采样
DSP基础学习-ADC采样 彭会锋 2015-04-27 22:30:03 在查看ADC采样例程的时候我发现了下面的代码挺有意思的 EALLOW; GpioCtrlRegs.GPAMUX2.bit.G ...
- UVA-10537 The Toll! Revisited (dijkstra)
题目大意:每经过一个地方就要交出相应的货物作为过路费,问将一批货物从起点运到终点,最少需要携带多少货物? 题目分析:在每一站交的过路费由当前拥有的货物量来决定,所以,要以终点为源点,求一次单源最短路即 ...
- 08day03
一.eclipse的使用 可能是全宇宙最好用的IDE debug 查看执行过程 查看源码 二.模块的常用方法 __name__ __file__ __doc__ 三.函数 参数 参数默认值 可变参数 ...
- Slasher Flick
打不死的小强! 返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始. 这是一些对你有帮助的资源: Array.slice() Array.splice() 按照提供的第一种方法,代码如下: f ...
- taskset -pc PID 查看线程占用cpu核
taskset -pc PID 可以用于 查看 当前线程 对应绑定的 在 哪个核上面. 这个 可以用于 程序优化, 查看 哪个线程占用的 cpu 比重比较高 首先 可以通过 top -H - ...
- web前端看IE11的变化
一.User-agent的变化 IE11的User-agent Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko IE10的U ...
- VB.Net日期格式化的5种使用方法
VB.Net日期(时间)格式化的5种使用方法 以下时间以2009年9月26号为例 第1种格式 : dd/MM/yyyy String.Format("{0:dd/MM/yyyy}&q ...
- bzoj3623
题解: 刚看到题目,还以为是2-sat 可是似乎不对啊... 然后就只能爆搜了 看了网上的题解,woc还真是报搜 然后就ac了 当然爆搜还要随机化 代码: #include<bits/stdc+ ...