服务器搭建docker应用

前言

最近在腾讯买了个Linux服务器,裸机低配版,刚好用来试试用docker来部署一个网站,不过最好不要用Centos 8,这个版本已经停止维护了,而且在安装环境时会遇到各种问题,如无法下载等。

注意:这篇文章讲的是手工部署,并不是自动部署,且是单机模式。

1、安装docker

安装docker看下面这篇文章,按照步骤安装即可。
centOS安装docker

2、安装MySQL

如果需要用到MySQL的,照下面这篇文章安装即可,如果没有用到跳过。
docker安装MySQL

3、安装Redis

如果需要用到Redis的,照下面这篇文章安装即可,如果没有用到跳过。
docker安装Redis

4、安装nginx

如果部署的应用是纯后端的,没有前端页面的,可以不用nginx,之前应用端口对应服务器开放的端口即可,在这里安装nginx,主要是部署前端页面,让前端和后端路径都是同一个端口访问,因为没有买域名,所以都是用IP访问。
docker 安装nginx

5、构建后端应用镜像

(1)准备
在服务器建一个文件夹,文件夹名和将要构建镜像名称一致即可,方便管理,用于保存Dockerfile和jar包。这里就建一个test文件夹为例。

#建文件夹
mkdir test
  • Dockerfile
    在test文件夹建Dockerfile文件。
#1、建Dockerfile文件
touch Dockerfile

#2、把下面的Dockerfile内容复制进来
# 编辑文件
vi Dockerfile

#保存退出
:wq

Dockerfile内容:

FROM java:8
VOLUME /tmp
EXPOSE 8080
COPY test.jar test.jar
ENTRYPOINT ["java","-jar","test.jar"]
  • 打包spring boot项目为jar包
    注意:项目里的数据库、Redis的连接IP用服务器的内网IP,必须是内网IP。除非把MySQL和Redis给放开让外网访问,可以换成公网IP,但不建议如此做,这是不安全的。
    把项目打包成jar包后,上传到服务器的test目录,即Dockerfile和jar包同在一目录。
    mac上传命令:
scp /本地路径/xxxx.jar root@ip地址:/服务器test路径/test
#例子:scp /Users/sakura/Downloads/test/test.jar [email protected]:/root/test
#然后输入服务器登录密码

windows上传,下载xshell,然后上传即可。

(2)构建镜像
进入test目录,然后执行构建命令,注意test后面有个点的,不要漏掉。

#test为镜像名称
docker build -t test .

查看镜像:

docker images

构建成功后启动容器:

#--name test 容器名称,/root/logs:/logs日志挂载到磁盘
#/root/logs磁盘路径,/logs为应用保存日志的相对路径
docker run --name test -d -p 8080:8080-v /root/logs:/logs test

启动完成后可以通过下面命令查看情况:

#查看日志,test为容器名
docker logs test

#查看容器启动状态,status为up则启动正常
docker ps -a

6、发布前端

这里以vue项目为例子,在本地项目中执行下面命令构建Vue项目:

npm run build

构建完成后会有一个dist文件夹,压缩。在第4步安装nginx有个html挂载文件夹,在html文件夹下再建一个前端文件夹test-page,把dist压缩包上传到test-page里,解压缩,注意解压缩后有个index.html文件,这个文件必须在test-page里,不能是在子级目录,不然nginx配置会不准确。
如图,此时目录(school-page就是test-page):


page.png

7、配置nginx

此时前后端都已经准备好了,就差配置nginx了。
进入nginx的conf目录,编辑nginx.conf文件:

cd /nginx/conf

vi nginx.conf

然后把下面配置添加到你的nginx配置,监听的是80端口,把192.168.0.1换成服务器的内网IP,/api/为后端接口的映射前缀,所以前端访问后端接口时都要加上这个前缀,当匹配到时转发到后端应用,具体如何配置可以搜索nginx的配置规则。然后配置前端,根路径即是前端首页,需要注意的是root 的路径是nginx容器的路径,并不是服务器本地挂载的路径。

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

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;
    server {
        listen 80;
        server_name localhost;

    location /api/ {
        proxy_pass http://192.168.0.1:8080/;
    }
    location / {
        root /usr/share/nginx/html/test-page;
        index index.html index.htm;
    }
    }

    include /etc/nginx/conf.d/*.conf;
}

保存后重启nginx:

#停止nginx
docker stop nginx

#启动nginx
docker start nginx

此时所有配置都已完成,在自己电脑输入地址访问:http://公网IP:80,即可访问。

你可能感兴趣的:(服务器搭建docker应用)