[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fYizM7pwUfaFB6dS5N-KbkCmn1kPqLDLFuY9wiYwjT6o":3},{"code":4,"message":5,"data":6},200,"成功",{"id":7,"createdAt":8,"title":9,"content":10,"summary":11,"image":12,"uid":13,"user":14,"categoryId":21,"category":22,"subCategoryId":24,"subCategory":25,"comments":27,"status":17,"reason":28,"notice":28,"visitCount":29,"commentCount":30,"keywords":31},18,"2024-01-22T15:01:27.42Z","Mac上操作，使用yml文件制作docker compose nginx","docker nginx image site: https://hub.docker.com/_/nginx  \n\n本文是在Mac OS上使用docker的桌面版来操作docker，以Mac OS模拟宿主机. \n\n### 一、在宿主机上自定义目录作为挂载目录\n比如在centos上可以使用home目录，大家也可以使用docker拉取centos镜像运行容器，在centos中操作，也可以在实际的云服务器上操作。  \n\n本文直接使用Mac OS模拟宿主机，所以在desktop新建了我自己的目录： \n```terminal\n/Users/hanweixing/Desktop/docker_projects/pro_2\n```\n![docker目录](https://image.xinwei.ltd/11705932893134.png)\n1.目录下的nginx空文件夹，将来存放挂载nginx容器中的目录/文件;\n2.docker-compose.yml文件后面会提到;\n3.所以自己准备一个空文件夹备用即可，这里新建nginx文件夹为例。\n### 二、在宿主机上部署nginx的注意点 \n1.当在宿主机上挂载nginx容器中的目录和配置文件时，宿主机需要提供一个nginx.conf文件，否则会报错： \n> pro_2-nginx0101-1  | nginx: [emerg] open() \"/etc/nginx/nginx.conf\" failed (2: No such file or directory)\n\n![](https://image.xinwei.ltd/21705932985538.png)  \n### 三、如何获取一个默认的nginx.conf文件\n当然你可以在网上搜索一个文件。 \n也可以使用临时容器获取&拷贝出来： \n```terminal \n$ docker container create --name tmpNginx nginx\n$ mkdir -p /Users/hanweixing/Desktop/docker_projects/pro_2/nginx/conf/\n$ docker cp tmpNginx:/etc/nginx/conf.d/default.conf /Users/hanweixing/Desktop/docker_projects/pro_2/nginx/nginx.conf\n$ docker rm tmpNginx\n```\n注：这里使用创建容器然后删除的做法，其实还有一个就是如下的用法，即不会保存的容器，这里不单独讲了。 \n```language\ndocker run --rm\n```\n这样就可以在我们的目录下得到一个nginx.conf文件。 \n```查看nginx.conf\nhanweixing@192  ~/Desktop/docker_projects/pro_2  cat nginx/nginx.conf\n```   \n```nginx.conf\nuser  nginx;\nworker_processes  auto;\n\nerror_log  /var/log/nginx/error.log notice;\npid        /var/run/nginx.pid;\n\nevents {\n    worker_connections  1024;\n}\n\nhttp {\n    include       /etc/nginx/mime.types;\n    default_type  application/octet-stream;\n\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  /var/log/nginx/access.log  main;\n\n    sendfile        on;\n    #tcp_nopush     on;\n\n    keepalive_timeout  60;\n\n    gzip  on;\n    \n    include /etc/nginx/conf.d/*.conf;\n\n    server{\n       listen 80;\n       charset utf-8;\n\n       location / {\n          root   /usr/share/nginx/html;\n          try_files $uri $uri/ =404;\n          index  index.html index.htm;\n       }\n\n       #error_page  404              /404.html;\n\n       # redirect server error pages to the static page /50x.html\n       #\n       error_page   500 502 503 504  /50x.html;\n       location = /50x.html {\n           root   html;\n       }\n    }\n}\n\n```\n### 四、编写docker compose yml文件\ndocker hub上的示例是：\n![](https://image.xinwei.ltd/31705934403764.png)\n仿照写一份完整的nginx配置：\n```terminal\n hanweixing@192  ~/Desktop/docker_projects/pro_2  vi docker-compose.yml\n```\n```docker-compose.yml\nversion: '1.0'\n\nservices:\n  nginx:\n    restart: always\n    container_name: blog_nginx\n    image: nginx\n    ports:\n      - 80:80 # expose outside\n      - 443:443 # ssl\n    volumes:\n      - ./nginx/nginx.conf/:/etc/nginx/nginx.conf\n      - ./nginx/conf.d:/etc/nginx/conf.d\n      - ./nginx/html:/usr/share/nginx/html\n      - ./nginx/www:/var/www\n      - ./nginx/logs:/var/log/nginx\n      - ./nginx/etc/cert:/etc/nginx/cert\n    environment:\n      - NGINX_PORT=80\n      - TZ=Asia/Shanghai # 时区\n    privileged: true\n\n```\n### 五、运行docker compose.\n```terminal\n hanweixing@192  ~/Desktop/docker_projects/pro_2  docker compose up -d\n```\n![](https://image.xinwei.ltd/41705934536583.png)\n挂载目录下自动生成对应容器的目录：\n![](https://image.xinwei.ltd/51705934561761.png)\n\n### 六、查看容器状态\n```terminal\ndocker container ls // 这是查看running状态的容器\n```\n建议使用\n```terminal\ndocker ps -a // check all\n```\n桌面版直接看docker\n![](https://image.xinwei.ltd/61705935467755.png)\n\n### 七、访问localhost:80\n![](https://image.xinwei.ltd/71705935497791.png)\n因为我们的nginx中的conf配置中挂载目录下没有提供html或php网页:\n![](https://image.xinwei.ltd/81705935533640.png)\n\n### 八、提供一个html文件测试\n随便编写一个html文件：index.html\n```index.html\n\u003Chtml>\n\u003Cbody>\n\u003Ch1>\n测试标题\n\u003C/h1>\n\u003Cdiv>\n测试\n\u003Cdiv>\n\u003C/body>\n\u003C/html>\n```\n![](https://image.xinwei.ltd/91705935578009.png)\n\n### 九、测试网页\n访问成功\n![](https://image.xinwei.ltd/101705935673279.png)\n\n\n\n\n\n\n\n\n\n","docker nginx image site: https://hub.docker.com/_/nginx  本文是在Mac OS上使用docker的桌面版来操作docker，以Mac OS模拟宿主机.  一、在宿主机上自定义目录作为挂载目录 比如在centos上可以使用home目录，大家也可以使用docker拉取centos镜像运行容器，在centos中操作，也可以在实际的云服务器上操作。 ","https://image.xinwei.ltd/11705932893134.png",499668042977349,{"phone":15,"userId":13,"nickName":16,"vipType":17,"avatar":18,"sign":19,"createdAt":20},"13121171998","全栈老韩",1,"https://image.xinwei.ltd/images/IMG_5430.JPG","全栈工程师，擅长iOS App开发、前端（vue、react、nuxt、小程序&Taro）开发、Flutter、React Native、后端（midwayjs、golang、express、koa）开发、docker容器、seo优化等。","2024-01-01T16:14:30.305Z",2,{"id":21,"name":23},"IT技术",36,{"id":24,"name":26,"parentId":21},"Docker",[],"",1626,0,"docker,docker yml,mac上yml,docker compose,docker compose nginx,nginx"]