利用Docker Hub上的Nginx部署Web应用

时间:2022-12-14 14:30:49

  Docker Hub上提供了很多镜像,如Nginx,我们不需要自己从ubuntu开始装Nginx再做发布,只需要先下载镜像到本地

docker pull nginx

在/opt下新建文件夹API,将需要发布的Web应用(我的应用文件夹名称是 ElecManageSystem)放到API下,创建并编辑nginx.conf配置文件,用于替换nginx的默认配置文件

nginx.conf的内容如下(根据自己的情况自行更改):

worker_processes  auto;
#pid /usr/local/nginx/logs/nginx.pid;
#error_log /usr/local/nginx/logs/error.log crit;
worker_rlimit_nofile 1000000; events {
worker_connections 65536;
multi_accept on;
use epoll;
} http {
include mime.types;
default_type application/octet-stream; sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off; keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10; limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100; gzip on;
gzip_disable "msie6"
gzip_static on;
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on; # include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*; server {
listen 80;
# 接口服务的IP地址
server_name xxx.xx.xx.xx;
charset utf-8;
access_log off;
# ElecManageSystem-应用文件夹名称 app-index.html页面所在文件夹
root /usr/share/nginx/html/ElecManageSystem/app;
location / {
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

然后创建并编辑Dockerfile

cd /opt
nano Dockerfile

Dockerfile的内容如下:

FROM nginx
MAINTAINER king # 将API下的应用文件夹复制到到容器的 /usr/share/nginx/html 路径下,API文件夹不会过去。
ADD API /usr/share/nginx/html
# 用编辑过的nginx.conf替换默认的配置文件
COPY nginx.conf /etc/nginx/nginx.conf

在/opt下打开终端,或者打开终端后进入到/opt下(cd /opt),在这里根据Dockerfile创建新的镜像。nginx-ems是新镜像的名称,可自行更改。

docker build -t nginx-ems .

以刚创建的新镜像nginx-ems为系统模板运行容器

docker run -i -p 1314:80 -t --name ems nginx-ems

-i : 可交互,这里只能监测访问记录;

-p 1314:80 : 将容器的80端口映射到宿主机的1314端口上,即通过宿主机的1314端口即可访问容器的80端口;

--name ems : 给容器命名为ems,可自行更改;

nginx-ems : 运行容器的系统模板。

如有问题还可参考: https://hub.docker.com/_/nginx/

如有需要替换下本地Host: http://laod.cn/hosts/2016-google-hosts.html