docker(mysql+springboot+nginx)项目单宿主机部署方案

docker(mysql+springboot+nginx)项目单宿主机部署方案

微服务单宿主机情况下通过docker部署mysql+springboot+nginx 前后端分离web项目,

省去了安装nginx mysql 和jdk环境的配置

如有必要可以集成到容器管理平台 kubernetes spark等

 

一  .    安装docker

1.更新依赖

yum update

必须支持 以下以centos 7系统为例

2.安装 

yum -y install docker

3.启动docker 并设置开机自启动

service docker start

4.设置开机启动

systemctl enable docker

5.配置加速器 不配置会导致镜像下载缓慢

vi /etc/sysconfig/docker

尾行添加 此处采用腾讯云镜像加速器,也可采用daocloud,alibaba的

OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'

 

以下镜像均以daoclou.io为准

二 .    安装mysql

docker run --name zzfw-mysql -d -p 3306:3306 -P -e mysqld -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=chengde_admin -e MYSQL_PASSWORD=chengde_admin -e MYSQL_DATABASE=chengde_db -v /mysql_data:/var/lib/mysql daocloud.io/library/mysql:5.7.4

--name zzfw-mysql 容器别名 便于查找

-p 3306:330 绑定对外端口3306 

root账号密码123456

默认数据库chengde_db 

默认账号密码:chengde_admin/chengde_admin

映射mysql相关配置及数据库 从容器/var/lib/mysql到宿主机/mysql_data

 

三.部署springboot应用

1.准备springboot.jar包 chengde-server-1.0-SNAPSHOT.jar  maven打包

2.准备DockerFile文件

FROM daocloud.io/library/java:openjdk-8u40



MAINTAINER v3ksing



RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone



ADD target/chengde-server-1.0-SNAPSHOT.jar /opt/chengde-server/target/



WORKDIR /opt/chengde-server/



EXPOSE 9090



ENV LANG C.UTF-8



CMD ["java","-jar","-Djava.security.egd=file:/dev/./urandom","target/chengde-server-1.0-SNAPSHOT.jar","--spring.profiles.active=prod"]

该文件包含docker镜像,时区,编码等,端口,启动命令等设置

 

3.上传jar包和Dockerfile文件,目录结构如下

--opt

----chengde-server

------Dockerfile

------target

--------chengde-server-1.0-SNAPSHOT.jar

 

4.执行镜像构建

cd /opt/chengde-server

docker build -t chengde-server:1.0 .

 

注意末尾句号不能少,如有需要可以docker push到镜像仓库

 

5.构建完毕 启动springbot镜像,绑定端口9090并映射日志文件到/opt/chengde-server/log

docker run --name chengde-server -p 9090:9090 -v /opt/chengde-server/log:/opt/chengde-server/log -t chengde-server:1.0

显示springboot日志表示启动成功

 

四.部署nginx web应用

 

静态文件可以通过Dockerfile构建镜像是一并打入,

这里仅单台部署,静态文件映射到单台宿主机

 

1.创建以下目录

mkdir /opt/nginx/conf.d

mkdir /opt/nginx/html

mkdir /opt/nginx/nginx.conf

2.nginx配置文件

文件示例:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
	
	location / {
		proxy_pass http://172.16.6.114:9090;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

	location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|svg|woff2|woff|ttf|js\.map|css\.map)$ {
		index index.html;
		root /usr/share/nginx/html;
	}

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 default.conf server节点

添加内容 

    location / {

        proxy_pass http://172.16.6.114:9090;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }



    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|svg|woff2|woff|ttf|js\.map|css\.map)$ {

        index index.html;

        root /usr/share/nginx/html;

    }

上传nginx配置文件default.conf 到/opt/nginx/conf.d目录

上传nginx配置文件nginx.conf 到/opt/nginx/nginx.conf目录

nginx.conf 暂不修改

 


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
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;

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

}

3.上传前端打包好的项目到/opt/nginx/html 目录下

app.html为应用端项目,

admin.html为后台管理端项目

 

4.启动nginx 

docker run --name my-nginx -d -p 80:80 -v /opt/nginx/html:/usr/share/nginx/html:ro -v /opt/nginx/logs:/var/log/nginx -v /opt/nginx/conf.d:/etc/nginx/conf.d:ro -v /opt/nginx/nginx.conf/nginx.conf:/etc/nginx/nginx.conf:ro -d daocloud.io/library/nginx:1.13.0-alpine

映射端口 

映射静态文件路径/opt/nginx/html

日志/opt/nginx/logs

配置文件等

 

可访问页面:

app端:http://172.16.6.114:81/app.html#/pre 

admin端:http://172.16.6.114:81/admin.html#/ 

此时静态页面完毕 但是后台接口504 bad gateway

需要在下一步开启防火墙端口

 

备注:重启nginx命令 

docker restart my-nginx

 

五.开启防火墙端口 centOS7

 

添加nginx,springboot端口,此处可优化9090采用内容容器访问,不对外开发

firewall-cmd --add-port=80/tcp  --permanent

firewall-cmd --add-port=9090/tcp  --permanent

 

其他命令:

#查看防火墙状态

firewall-cmd --state

#查看端口

firewall-cmd --zone=public --list-ports

#关闭端口

firewall-cmd --remove-port=80/tcp --permanent

 

springboot接口可访问,部署完毕

 

详细docker命令参考

https://www.gitbook.com/book/yeasy/docker_practice/details

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您提供一个详细教程来帮助您部署Vue+SpringBoot前后端分离项目到云服务器上使用Docker。 首先,确保您已经完成以下准备工作: - 注册一个云服务提供商的账号,并创建一个云服务器实例。 - 在本地环境安装了Docker,并熟悉Docker的基本操作。 - 本地已经安装了Node.js和npm,以及Vue CLI和Java开发环境。 以下是详细的步骤: 1. 登录到云服务器: 使用SSH工具连接到您的云服务器。例如,使用命令行工具执行以下命令: ``` ssh username@server_ip_address ``` 2. 安装Docker: 根据您的云服务器的操作系统,选择对应的安装方式进行Docker安装。以下是一些常见操作系统的安装命令: - Ubuntu: ``` sudo apt-get update sudo apt-get install docker.io ``` - CentOS: ``` sudo yum update sudo yum install docker ``` 3. 验证Docker安装是否成功: 执行以下命令来验证Docker是否已经成功安装: ``` docker version ``` 4. 构建Vue项目: 在本地开发环境,使用Vue CLI创建Vue项目,并进行开发和测试。确保项目可以正常运行。 ``` vue create myproject cd myproject npm run serve ``` 5. 打包Vue项目: 在Vue项目根目录下执行以下命令,将Vue项目打包成静态文件。 ``` npm run build ``` 6. 创建SpringBoot项目: 使用Spring Initializr创建SpringBoot项目,并进行开发和测试。确保项目可以正常运行。 - 访问Spring Initializr网站:https://start.spring.io/ - 选择项目的基本设置,如使用的编程语言、构建工具、Spring Boot版本等。 - 添加所需的依赖项,如Spring Web、Spring Data JPA等。 - 点击"Generate"按钮下载生成的SpringBoot项目压缩包。 - 解压缩项目压缩包,并使用您喜欢的集成开发环境(IDE)打开项目。 7. 创建Dockerfile: 在SpringBoot项目的根目录下创建一个名为`Dockerfile`的文件,用于定义Docker镜像的构建步骤。在`Dockerfile`添加以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/myproject.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 8. 构建Docker镜像: 在SpringBoot项目的根目录下执行以下命令,构建Docker镜像: ``` docker build -t myproject . ``` 9. 运行Docker容器: 执行以下命令,在Docker运行SpringBoot项目Docker容器: ``` docker run -d -p 80:8080 myproject ``` 10. 访问应用: 使用浏览器访问您的云服务器的公网IP地址,即可查看部署好的前后端分离项目。 希望这个详细教程能够帮助您成功部署Vue+SpringBoot前后端分离项目到云服务器上使用Docker。如果您有任何问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值