mac 下用dockerfile搭建nginx

1、创建nginx文件夹,放置各种配置及日志等。

mkdir -p /docker/nginx 
mkdir -p /docker/nginx/logs

docker 文件夹是我存放所有基础设施容器的地方。

2、创建nginx配置文件

cd /docker/nginx
vim nginx.conf

nginx.conf为主配置文件

user www-data;
  
worker_processes  auto;

error_log /webser/logs/error.log;

events {
    worker_connections  1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /webser/logs/access.log  main;

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    client_max_body_size 20m;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*;
}

最后一句include /etc/nginx/conf.d/*.conf;

这里的*.conf就是子配置。我只创建了一个default.conf

mkdir /docker/nginx/conf.d
cd /docker/nginx/conf.d
vim default.conf

在default.conf里面加入你的server级别的配置。

我这里只是监听了80端口,并反向代理到了9000端口

server {
  
  listen  80;
  server_name zj-dev.myysq.com.cn;
  root /webser/www/mobilecheckquality/web/;
  location ~ .*\.(js|css|png|jpg|gif)$
  {
    if (-f $request_filename) {
        expires 1d;
        break;
    }
  }
  location / {
   index index.html index.htm index.php;

   autoindex off;

  }

  location ~ \.php(.*)$ {
   fastcgi_pass php1:9000;   #php容器的IP地址
   fastcgi_index index.php;
   fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   include  fastcgi_params;
  }
   include /webser/www/mobilecheckquality/web/nginx-header.conf;
   include /webser/www/mobilecheckquality/web/nginx-rewrite.conf;
}

3、创建dockerfile文件

vim /docker/nginx/dockerfile
FROM nginx:1.15.1
  
ADD ./nginx.conf /etc/nginx/nginx.conf
ADD ./conf.d /etc/nginx/conf.d/

RUN apt-get update && apt-get install -y \
        curl \
        vim \
        telnet \
        wget \
        net-tools \
        inetutils-ping
RUN mkdir -p /webser/logs \
&& mkdir -p /webser/www \
&& chown -R www-data:www-data /webser/logs \
&& chown -R www-data:www-data /webser/www
WORKDIR /webser/www

4、构建nginx镜像

docker build -t nginx . 

5、创建docker-compose.yml容器编排

vim /docker/nginx/docker-compose.yml
version: '3.0'

services:
  nginx:
    restart: always
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - /docker/nginx/conf.d:/etc/nginx/conf.d:ro
      - /docker/nginx/logs:/webser/logs

docker-compose对格式要求很严格注意里面的空格。

解释下我的设置

restart  永远重启

image 从nginx镜像拉取

ports 输出使用80,443端口

volumes 挂载外部卷到docker内部。这样就可以使用我们刚才创建好的配置了。

(这里面:ro的意思是只读的意思,表示第一第二个卷只能被容器读取不能写入)

6、运行

要保证在我们刚才创建的目录里

cd /docker/nginx

docker-compose up -d

加-d的意思是后台运行。

7、停止镜像 

docker-compose down

8、进入镜像

docker exec -it 容器id /bin/bash

9、docker 常用命令

docker ps       //查询所有正在运行的容器
 
docker ps -a  //查询所有创建的容器
 
dockere stop [容器id/容器名] //停止运行容器
 
docker rm [容器id/容器名]  //删除容器
 
docker images  //查询所有拉取的镜像
 
docker rmi [REPOSITORY] //删除镜像
 
docker restart [容器id/容器名] //重启容器
 
docker inspect --format '{{ .NetworkSettings.IPAddress }}' c9996261e1c5 //查询容器ip地址

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值