docker 启动sqlserver_从无到有:利用Docker部署Spring Boot+React+SQLServer+MongoDB项目

本文介绍了如何使用Docker部署一个包含Spring Boot后端、React前端、SQLServer和MongoDB的项目。通过Docker-Compose进行服务编排,详细阐述了Docker的安装、Nginx的配置与页面部署、SQLServer的安装及容器间通信的重要性。
摘要由CSDN通过智能技术生成

很早之前就关注Docker了,但由于实习实在是太忙了,一直没空研究,最近开始着手毕业设计,就借此机会好好研究了一下,想把毕业设计部署到Docker中。(我本身也是菜鸟,肯定有很多错误,希望各位大佬们轻喷O(∩_∩)O~~)

Docker是什么呢?官方解释是说,Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。什么是容器呢?我理解的是,容器就像是一个更轻量的虚拟机,(但是这样理解也有错误,因为容器并不虚拟硬件)。容器为镜像,例如一个Nginx镜像,一个SQL Server镜像,甚至是一个SpringBoot提供运行环境,你可以将上述应用直接部署在Docker上,仓库就是存放镜像的地方,DockerHub是docker的公共仓库,我们也可以构建自己的私有仓库。好了话不多说,让我们开始吧。

我要部署的项目是一个前端加后端的项目,前端用的Antd全家桶(基于React),后端是SpringBoot,数据库是SQL Server和MongoDB,前端页面请求后端数据,后端访问两个数据库,所以大体思路上就需要4个容器:Nginx(部署前端页面)、SpringBoot容器(后端应用)、SQLServer容器以及MongoDB容器。Nginx是一个反向代理服务器,我以前没接触过,所以配置起来格外吃力o(╥﹏╥)o,我们将前端页面部署在它上面。MongoDB是一个非关系型数据库,我利用它来存放文件。

我们利用Docker-Compose构建应用,Docker-Compose的服务编排工具,主要用来构建基于Docker的复杂应用,Docker-Compose构建应用的时候可以使用DockerHub上的镜像,也可以使用自己构建的镜像。DockerHub类似于一个仓库,上面有很多其他人已经写好的镜像,例如nginx,我们可以直接使用。

首先安装Docker:

sudo url -sSL https://get.docker.com/ | sh

如果提示url找不到先执行命令:sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

安装完毕后在/etc/docker下新建daemon.json文件,添加如下代码:

{

"registry-mirrors": [

"http://9600955f.m.daocloud.io"

],

"insecure-registries": []

}

这个操作的目的是配置镜像加速,可以使镜像下载的更快,该地址可以到daocloud上免费申请。

安装完毕后使用docker -v查看是否安装成功,一切配置完毕后就可以使用了

安装配置Nginx

使用docker search搜索镜像,例如:

docker search nginx

如图第一个镜像就是官方的nginx镜像,使用sudo docker pull nginx下载镜像。

因为我已经下载了,所以不会再次下载,等待下载完成后就可以使用该镜像了。

我们使用docker run命令使用指定的镜像启动一个容器,例如:

sudo docker run -d --name mynginx -p 8080:80 nginx

-d表示让容器在后台运行,--name是起一个别名,-p是容器的80端口对应主机的8080端口,nginx就是我们刚刚pull下来的镜像。

运行完毕后,打开浏览器,输入http://127.0.0.1:8080/,显示如下页面,说明nginx已经启动成功了:

使用docker ps查看正在运行中的镜像:

使用docker ps -a查看所有镜像:

2018/5/29日更

nignx现在算是启动起来了,那么我们现在就是要往上面部署我们的页面了。

部署页面需要让nginx知道页面存放路径,我们需要修改nginx的配置文件。

nginx有两个配置文件,路径如下:

/etc/nginx/nginx.conf

/etc/nginx/conf.d

里面包含了例如配置页面存放路径、请求转发等配置,上面的路径是容器里内的路径,所以我们要用到挂载,将主机的路径挂载到容器内的目录,这样容器内的nginx可以直接访问主机的目录下的配置文件。

新建如下两个文件 ,可以自己指定路径,但要跟后文匹配。

/etc/docker/mynginx/nginx.conf

/etc/docker/mynginx/conf.d

然后打开编辑nginx.conf里面的内容

#nginx.conf

events {

worker_connections 1024;

}

http {

include /etc/nginx/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 /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;#容器内目录

}

这个配置文件我们主要看inculd,他后面的路径就是另一个配置文件conf.d的路径,要注意的是,这个路径不是当前主机conf.d的目录,而是挂载的容器内的路径。

另一个配置文件conf.d的内容:

#conf.d

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log /var/log/nginx/host.access.log main;

location / {

root /usr/share/nginx/html;#容器内目录

index index.html index.htm;

}

location /api{

proxy_pass http://192.168.1.1:9999/api;

# access_log "logs/test.log";

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

这个配置文件比较容易理解,listen监听80端口,服务名是localhost,location /后就是我们要部署的页面路径,这是nginx的路径匹配,匹配上的路径会进行相应的请求,有兴趣的可以深究,我就不多说了。

root /usr/share/nginx/html;#容器内目录

index index.html index.htm;

这一行就是配置我们页面的地址,表示页面放在了容器内的/usr/share/nginx/html目录下,同样我们也可以将本地目录挂载到上面。

创建/usr/docker/mynginx/html目录,在html目录下新建index.html,然后编辑添加如下内容:

Hello World

然后执行以下命令:

sudo docker run \

--name mynginx \

-d -p 8080:80 \

-v /usr/docker/mynginx/html:/usr/share/nginx/html \

-v /etc/docker/mynginx/nginx.conf:/etc/nginx/nginx.conf:ro \

-v /etc/docker/mynginx/conf.d:/etc/nginx/conf.d \

nginx

注意执行以上命令时先用docker rm mynginx删除已经存在的mynginx容器,否则会报错。

该命令比之前的命令多了三行挂载的命令。:前面是主机的目录,后面是nginx容器的目录,这样容器就可以直接访问主机内的文件了。

执行命令后页面如下说明配置成功:

后面可以配置任意的页面,只需要将index页面放到html路径下即可,挂载还有两种方式,分别是用DocekrFile文件和Docker-Compose.yaml文件构建,我会在后面详细解释。

安装配置SQLServer

安装SQLServer微软给出了比较全的步骤,大家可以参考下:Get started with SQL Server 2017 on Docker​docs.microsoft.com

首先pull镜像

sudo docker pull microsoft/mssql-server-linux:2017-latest

pull下来后可以直接使用run命令运行了,但是里面有几个参数需要注意:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Alex@1016' \

-p 1433:1433 --name mysqlserver \

-d microsoft/mssql-server-linux:2017-latest

ACCEPT_EULA=Y表示要同意一个

执行以上命令后你应该就创建好了一个SQLServer镜像,可以直接使用了。我们可以使用

sqlcmd进行连接,也可以使用图形化界面例如DBeaver进行连接。

首先安装sqlcmd

sudo apt-get install mssql-tools

安装完毕后就可以使用了,这里需要配置一下环境变量:

sudo gedit /etc/profile

添加 export PATH="$PATH:/opt/mssql-tools/bin"

然后 source /etc/profile使配置立即生效

使用

sqlcmd -S localhost -U SA -P 'Alex@1016'

连接数据库

然后就可以操作数据库了,例如创建一个库,注意输完命令都要输入go结束

创建完毕我们插入数据

use test

create table USERS(NAME varchar(255),PASSWORD varchar(255))

insert into USERS (NAME,PASSWORD)values('alex','123');

select * from USERS

查询到了我们刚刚插入的语句。

至此,SQLserver就安装成功了,但是这并不是我们需要的,因为我们是从SpringBoot容器中访问SQLServer容器,而我们采用这种方式只能从主机访问,这就涉及到容器的通信,我们后面使用Docker-Compose构建就可以实现。

to be continued...

Ps:大佬们留个赞再走呗(๑╹∀╹๑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值