docker部署nginx,部署springboot项目,并实现访问

一、先部署springboot项目

1、安装docker:

 yum install docker -y

2、启动docker:

service docker start

重启:

service docker restart

3、查看版本:

docker -v

4、使设置docker.service生效(路径:/usr/lib/systemd/system/docker.servic):

sudo systemctl enable docker

5、查看docker状态:

systemctl status docker

编写Dockerfile

FROM java:8
VOLUME /tmp
ADD CmdbAddBackend.jar CmdbAddBackend.jar
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/CmdbAddBackend.jar"]

7、Dockerfile文件要与jar包文件在同一文件夹下

8、构建镜像(点不要忘记):

 docker build -t cmdbdocker .

9、要启动cmdbdocker:

大写-P表示随机分配端口  docker run -d -P cmdbdocker

小写-p 表示指定端口,主机端口:docker容器端口  docker run -d -p 8086:8080 cmdbdocker

查看正在运行的容器         docker ps
停止正在运行的容器        docker stop 容器id
启动容器        docker start 容器id
启动多个容器:docker start container1 container2 container3

13、查看镜像

docker images

14、删除镜像

# 根据id删除单个镜像

docker rmi -f 镜像id

# 根据条件删除所有none的镜像

docker rmi -f $(docker images -f "dangling=true" -q)

15、linux查看jdk安装路径:

which java

二、部署nginx服务

1.安装的命令

sudo docker search nginx
docker pull nginx

2.查看是否安装

docker images

 3.运行测试nginx 

docker run --name nginx-test -p 9091:80 -d nginx
--name  #给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p #映射端口,将docker宿主机的9091端口和容器的80端口进行绑定
-v #挂载文件用的
-d #表示启动的是哪个镜像。

4.浏览器访问nginx服务,服务器ip:端口号

 5.Nginx服务的配置和部署
为什么需要做文件的映射?
我们在使用容器的过程中需,有时候需要对容器中的文件进行修改管理,如果不做文件映射的化,我们使用docker exec -it 容器ID/容器名 /bin/bash 才能进入nginx中的文件里面如图

如果把关键文件映射到主机上,那么就可以在主机中进行修改而不必进入文件当中才进行修改了。

 需要在主机上建立相应的关键文件目录
在home下创建一个docker文件夹,用来专门存docker容器的映射文件。
在docker下创建一个nginx的文件夹,用于存nginx的映射文件。
在nginx下创建三个关键的映射文件。
www文件映射www目录,也就是网页目录。
logs文件映射日志目录。
conf文件映射配置目录

cd /home/nginx

mikdir www

mikdir logs

mikdir conf

6.先在容器中拷贝配置文件
docker cp 容器ID:/etc/nginx/nginx.conf /home/docker/nginx/conf
#注意此时的容器必须是运行的


docker中nginx与主机文件映射规则如下
主机                                              docker
/home/docker/nginx/www                           /usr/share/nginx/html #网页文件
/home/docker/nginx/conf/nginx.conf               /etc/nginx/nginx.conf#配置文件
/home/docker/nginx/logs                          /var/log/nginx#日志文件

关闭之前运行的容器
docker stop 容器ID
docker rm 容器ID

运行nginx,同时进行文件挂载:
docker run -d -p 9091:80  --name nginx_cmdb -v /home/docker/nginx/www:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx/logs:/var/log/nginx nginx

7.在www目录下建立一个html文件

8.访问nginx

 9.修改nginx.conf文件

sudo gedit /home/docker/nginx/conf/nginx.conf 

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  192.****;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /home/docker/nginx/www/;
            index  index.html index.htm;
        }
        
        location /api/  {
           proxy_pass http://192.***:8085/backend/;
           #proxy_set_header Host $http_host;
           proxy_connect_timeout 15;
           proxy_send_timeout 15;
           proxy_read_timeout 15;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
}

10.server中的配置解释参考如下:

11.重启docker

docker ps#获取容器的ID
docker restart 容器ID

浏览器通过ip端口访问 ,可以正常访问:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/91425.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt第二天

#include "widget.h" #include "ui_widget.h" #include "QDebug" Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(QSize(800,600)); //使用匿名对象,调用重…

HarmonyOS开发:超详细了解项目的工程结构

前言 系列文章目录: HarmonyOS开发第一步,熟知开发工具DevEco Studio 当我们熟练的掌握了DevEco Studio之后,就可以创建项目进行练习了,和市场上大多数IDE一样,DevEco Studio也给我们提供了很多的实例模板&#xff0c…

ElasticSearch-集成ik分词器

本文已收录于专栏 《中间件合集》 目录 背景介绍版本选择优势说明集成过程1.下载安装包2.解压安装包3.重启ElasticSearch服务3.1通过ps -ef | grep elastic查看正在启动的es进程号3.2使用kill -9 xxx 杀死进程3.3使用 ./elasticsearch 启动es服务 分词测试细粒度分词方式分词请…

【面试题】UDP和TCP有啥区别?

UDP UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就…

基于stm32的烟雾浓度检测报警proteus仿真设计(仿真+程序+讲解)

基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 1.主要功能2.仿真3. 程序4. 资料清单&下载链接 基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号&a…

使用TPDSS连接GaussDB数据库

TPDSS是GaussDB官方提供的数据库连接工具,可以在TPDSS查看GaussDB的建库建表语句,于GaussDB使用兼容性比较好,由于TPDSS查找比较麻烦,下面给出了下载链接地址: 链接:https://pan.baidu.com/s/1Lqcu3KriE47…

打破数据孤岛,实现文档数据互通

随着数字经济加速发展,企业数字化转型正向更深层次推进。非结构化数据量也正在飞速增长,这些数据以文档、图片、音频等形式散落在组织内部,这给数据的整理和统一利用增加了难度。由于部门、应用、框架、多云环境等原因形成非结构化数据孤岛。…

JavaWeb 速通Ajax

目录 一、Ajax快速入门 1.基本介绍 : 2.使用原理 : 二、Ajax经典入门案例 1.需求 : 2.前端页面实现 : 3. 处理HTTP请求的servlet实现 4.引入jar包及druid配置文件、工具类 : 5.Domain层实现 : 6.DAO层实现 : 7.Service层实现 : 8.运行测试 : 三、JQuery操作Ajax 1 …

CI/CD 持续集成 持续交付

CI(Continuous integration)持续集成 参考:https://www.jianshu.com/p/2132949ff84a 持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。 持续集成的目的,是让…

网络流量监控-sniffnet

{alert type“info”} 今天来分享一个监控流量的应用sniffnet。 github项目地址:https://github.com/GyulyVGC/sniffnet {/alert} 可以在github的readme上看到这个程序有的特性: 为什么要介绍它呢:主要是多线程、跨平台、可靠、操作简单 我…

进程Start

Linux中的命令解释器和Windows的程序管理器explorer.exe一样地位,都是在用户态下运行的进程 共享变量发生不同进程间的指令交错,就可能会数据出错 进程只作为除CPU之外系统资源的分配单位 CPU的分配单位是线程 每个进程都有自己的独立用户空间 内核空间是OS内核的…

【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

文章目录 一、爬虫对象-豆瓣读书TOP250二、python爬虫代码讲解三、讲解视频四、完整源码 一、爬虫对象-豆瓣读书TOP250 您好,我是 马哥python说 ,一名10年程序猿。 今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数…