微服务blog项目docker部署文档
一、环境准备
1.服务器准备
| 序号 | ip | 系统版本 | 硬件配置 |
|---|---|---|---|
| 1 | 192.168.17.x | centos7 | 2CPU/4G内存/30G存储 |
2.初始化系统
如果系统未做初始化请做初始化vim init.sh 将以下脚本写入到init.sh里面
#!/bin/bash
# 交互式网络配置脚本
echo "======================= 系统初始化配置 ======================="
# 函数:获取用户输入
get_input() {
local prompt="$1"
local default_value="$2"
local user_input
if [ -n "$default_value" ]; then
read -p "$prompt (默认: $default_value): " user_input
if [ -z "$user_input" ]; then
user_input="$default_value"
fi
else
read -p "$prompt: " user_input
fi
echo "$user_input"
}
# 函数:验证IP地址格式
validate_ip() {
local ip="$1"
local regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$"
if [[ $ip =~ $regex ]]; then
IFS='.' read -r -a octets <<< "$ip"
for octet in "${octets[@]}"; do
if (( octet < 0 || octet > 255 )); then
return 1
fi
done
return 0
else
return 1
fi
}
# 函数:验证子网掩码格式
validate_netmask() {
local mask="$1"
local regex="^255\.255\.255\.[0-9]+$"
if [[ $mask =~ $regex ]] || [[ "$mask" =~ ^[0-9]{1,2}$ ]]; then
return 0
else
return 1
fi
}
# 显示当前网络接口信息
echo "当前网络接口信息:"
echo "---------------------------------------------------"
ip addr show | grep -E "^[0-9]+:|inet " | grep -v "127.0.0.1"
echo "---------------------------------------------------"
# 设置要分配的IP地址、子网掩码和默认网关
echo "正在配置网络参数..."
echo ""
# 获取网卡名称
interface_list=$(ls /etc/sysconfig/network-scripts/ifcfg-* 2>/dev/null | xargs -n1 basename | sed 's/ifcfg-//' | tr '\n' ' ')
default_interface=""
if [ -n "$interface_list" ]; then
default_interface=$(echo "$interface_list" | awk '{print $1}')
fi
# 交互式输入网络参数
while true; do
network_interface=$(get_input "请输入网卡名称" "$default_interface")
if [ -n "$network_interface" ]; then
break
fi
echo "错误: 网卡名称不能为空!"
done
# 检查是否有现有配置
networkfile="/etc/sysconfig/network-scripts/ifcfg-$network_interface"
if [ -f "$networkfile" ]; then
echo ""
echo "发现现有网络配置:"
echo "---------------------------------------------------"
grep -E "^(IPADDR|NETMASK|GATEWAY|DNS|BOOTPROTO)=" "$networkfile" 2>/dev/null || echo "(无配置)"
echo "---------------------------------------------------"
read -p "是否覆盖现有配置? (y/n, 默认: n): " overwrite
if [[ ! "$overwrite" =~ ^[Yy]$ ]]; then
echo "已取消配置,使用现有配置。"
else
# 备份原配置文件
backup_file="${networkfile}.backup.$(date +%Y%m%d%H%M%S)"
cp "$networkfile" "$backup_file"
echo "已备份原配置文件到: $backup_file"
fi
fi
# 获取IP地址
while true; do
ip_address=$(get_input "请输入IP地址" "192.168.137.140")
if validate_ip "$ip_address"; then
break
else
echo "错误: IP地址格式不正确! 请重新输入。"
fi
done
# 获取子网掩码
while true; do
subnet_mask=$(get_input "请输入子网掩码 (格式: 255.255.255.0 或 CIDR如 24)" "255.255.255.0")
if validate_netmask "$subnet_mask"; then
break
else
echo "错误: 子网掩码格式不正确! 请重新输入。"
fi
done
# 获取默认网关
while true; do
# 自动生成默认网关建议(通常是IP地址的第一个可用地址)
suggested_gateway=$(echo "$ip_address" | sed 's/[0-9]*$/2/')
default_gateway=$(get_input "请输入默认网关" "$suggested_gateway")
if validate_ip "$default_gateway"; then
break
else
echo "错误: 网关地址格式不正确! 请重新输入。"
fi
done
# 获取DNS服务器
dns1=$(get_input "请输入主DNS服务器" "114.114.114.114")
dns2=$(get_input "请输入备DNS服务器" "223.5.5.5")
# 确认配置
echo ""
echo "=============== 请确认以下网络配置 ==============="
echo "网卡名称: $network_interface"
echo "IP地址: $ip_address"
echo "子网掩码: $subnet_mask"
echo "默认网关: $default_gateway"
echo "主DNS: $dns1"
echo "备DNS: $dns2"
echo "=================================================="
echo ""
read -p "确认应用以上配置? (y/n, 默认: n): " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
echo "配置已取消!"
exit 1
fi
# 关闭防火墙
echo "正在关闭防火墙..."
systemctl stop firewalld 2>/dev/null && systemctl disable firewalld 2>/dev/null && echo "防火墙已关闭" || echo "警告: 防火墙关闭失败或未安装"
# 关闭NetworkManager
echo "正在关闭NetworkManager..."
systemctl stop NetworkManager 2>/dev/null && systemctl disable NetworkManager 2>/dev/null && echo "NetworkManager已关闭" || echo "警告: NetworkManager关闭失败或未安装"
# 关闭SELinux
echo "正在关闭SELinux..."
setenforce 0 2>/dev/null
if [ -f /etc/selinux/config ]; then
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/^SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
echo "SELinux已禁用"
else
echo "SELinux配置文件不存在,跳过"
fi
# 关闭SSHD的DNS验证
echo "正在关闭SSHD的DNS验证..."
if [ -f /etc/ssh/sshd_config ]; then
# 备份原配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup.$(date +%Y%m%d%H%M%S)
# 修改配置
sed -i 's/^#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
sed -i 's/^UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
# 添加配置项(如果不存在)
if ! grep -q '^UseDNS' /etc/ssh/sshd_config; then
echo "UseDNS no" >> /etc/ssh/sshd_config
fi
# 重启服务
systemctl restart sshd 2>/dev/null && echo "SSHD配置已更新" || echo "警告: SSHD服务重启失败"
else
echo "警告: SSH配置文件不存在,跳过配置"
fi
# 配置Yum源
echo "正在配置Yum源..."
# 备份原有源
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/null
# 下载阿里云CentOS源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 2>/dev/null
if [ $? -eq 0 ]; then
echo "CentOS-Base.repo下载成功"
else
echo "警告: CentOS-Base.repo下载失败,请检查网络连接"
fi
# 下载阿里云EPEL源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 2>/dev/null
if [ $? -eq 0 ]; then
echo "epel.repo下载成功"
else
echo "警告: epel.repo下载失败,请检查网络连接"
fi
# 清理缓存并生成新缓存
yum clean all 2>/dev/null
yum makecache 2>/dev/null && echo "Yum缓存已更新" || echo "警告: Yum缓存更新失败"
# 配置网卡
echo "正在配置网卡 $network_interface ..."
# 检查并获取UUID
uuid_line=""
if [ -f "$networkfile" ]; then
uuid_line=$(grep '^UUID=' "$networkfile")
fi
# 如果没有找到UUID,则生成一个新的
if [ -z "$uuid_line" ]; then
uuid_line="UUID=\"$(uuidgen)\""
fi
# 清空现有配置文件
> "$networkfile"
# 编写ifcfg文件
cat >> "$networkfile" <<EOF
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="$network_interface"
$uuid_line
DEVICE="$network_interface"
ONBOOT="yes"
IPADDR=$ip_address
NETMASK=$subnet_mask
GATEWAY=$default_gateway
DNS1=$dns1
DNS2=$dns2
EOF
echo "网络配置文件已生成: $networkfile"
echo ""
# 安装基础软件包
echo "正在安装基础软件包..."
yum -y install wget lrzsz unzip gzip telnet vim 2>/dev/null || echo "警告: 软件包安装失败,请检查yum源配置"
# 配置基础环境变量
echo "配置基础环境变量..."
# 备份原配置文件
cp /etc/profile /etc/profile.backup.$(date +%Y%m%d%H%M%S) 2>/dev/null
cp ~/.vimrc ~/.vimrc.backup.$(date +%Y%m%d%H%M%S) 2>/dev/null 2>/dev/null
# 追加环境变量配置
if ! grep -q "if \[ \$(id -u) == 0 \]; then" /etc/profile; then
cat >> /etc/profile <<EOF
if [ \$(id -u) == 0 ]; then
export PS1='[\033[31;1m\]\u\[\033[m\]@\h \w]# '
else
export PS1='[\033[34;1m\]\u\[\033[m\]@\h \w]\$ '
fi
alias ll='ls -lh --color=auto'
alias grep='grep --color'
alias free='free -m'
alias df='df -h'
alias du='du -h'
alias vi='vim'
EOF
fi
# 配置vimrc
cat > ~/.vimrc <<EOF
"设置高亮
syntax on
"显示行号
set number
"自动缩进功能
set autoindent
"启用鼠标支持
"set mouse=a
"vim新打开.sh文件自动添加一下内容
autocmd BufNewFile *.sh exec ":call SetComment()"
func SetComment()
if expand("%:e")=='sh'
call setline(1,'#!/bin/bash')
call setline(2,'#Author: xxx')
call setline(3,'#Create time:'.strftime("%Y-%m-%d"))
endif
endfunc
EOF
# 应用环境变量
source /etc/profile 2>/dev/null
# 重启网络服务
echo "正在重启网络服务..."
if systemctl restart network 2>/dev/null; then
echo "网络服务重启成功!"
else
echo "尝试使用其他方式重启网络..."
ifdown "$network_interface" 2>/dev/null && ifup "$network_interface" 2>/dev/null || echo "网络重启失败,请手动检查"
fi
echo ""
echo "======================= 配置完成 ======================="
echo "网络配置摘要:"
echo "IP地址: $ip_address"
echo "子网掩码: $subnet_mask"
echo "默认网关: $default_gateway"
echo "DNS服务器: $dns1, $dns2"
echo "配置文件: $networkfile"
echo ""
echo "当前网络状态:"
echo "---------------------------------------------------"
ip addr show "$network_interface" 2>/dev/null | grep "inet " || echo "警告: 无法获取IP地址,请检查配置"
echo "---------------------------------------------------"
echo ""
echo "请使用以下命令测试网络连接:"
echo "1. ping $default_gateway"
echo "2. ping 114.114.114.114"
echo "3. ping www.baidu.com"
echo ""
echo "脚本执行完毕!"
给脚本执行权限
chmod +x init.sh
#运行脚本
./init.sh
二、项目解析
blog项目是使用Java开发,使用了前后端分离,前端使用vue,后端使用springcloud微服务框架进行开发
项目部署环境:jdk8+mysql5.7+redis5.0+nacos+docker。注意:如果部署项目中,需要mysql数据库或者其他数据如redis等中间件时,我们应该优先运行中间件
三、docker部署
1.执行自动化安装脚本
将以下脚本写入到install-docker.sh中
#!/bin/bash
# Docker自动化部署脚本
# 功能:在CentOS/RHEL系统上自动安装Docker CE 20.10.*
# 注意:本脚本需要root权限执行
set -e # 遇到错误立即退出
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 无颜色
# 版本配置
DOCKER_VERSION="20.10.*"
# 日志文件
LOG_FILE="/tmp/docker_install_$(date +%Y%m%d_%H%M%S).log"
# 函数:打印彩色信息
print_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
print_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 函数:检查命令执行结果
check_result() {
if [ $? -eq 0 ]; then
echo -e "${GREEN}[SUCCESS]${NC} $1"
else
echo -e "${RED}[FAILED]${NC} $1"
exit 1
fi
}
# 函数:记录日志
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 检查是否是root用户
check_root() {
if [[ $EUID -ne 0 ]]; then
print_error "此脚本需要root权限运行!"
print_error "请使用: sudo bash $0"
exit 1
fi
}
# 主安装函数
install_docker() {
log "开始Docker安装过程..."
# 1. 卸载旧版本Docker
print_info "步骤1: 卸载旧版本Docker..."
log "卸载旧版本Docker"
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine 2>/dev/null || true
check_result "卸载旧版本完成"
# 2. 安装yum工具
print_info "步骤2: 安装yum-utils工具..."
log "安装yum-utils"
yum install -y yum-utils
check_result "yum-utils安装完成"
# 3. 添加Docker镜像源
print_info "步骤3: 添加阿里云Docker镜像源..."
log "添加Docker CE仓库"
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
check_result "镜像源添加完成"
# 4. 更新yum缓存
print_info "步骤4: 更新yum缓存..."
log "更新yum缓存"
yum makecache fast
check_result "yum缓存更新完成"
# 5. 安装Docker指定版本
print_info "步骤5: 安装Docker CE ${DOCKER_VERSION}..."
log "安装Docker CE ${DOCKER_VERSION}"
yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io
check_result "Docker安装完成"
# 6. 创建配置目录
print_info "步骤6: 创建Docker配置目录..."
log "创建/etc/docker目录"
mkdir -p /etc/docker
check_result "目录创建完成"
# 7. 配置镜像加速器
print_info "步骤7: 配置Docker镜像加速器..."
cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
check_result "镜像加速器配置完成"
# 8. 启动Docker服务
print_info "步骤8: 启动Docker服务并设置开机自启..."
log "启动Docker服务"
systemctl start docker
check_result "Docker服务启动"
log "设置Docker开机自启"
systemctl enable docker
check_result "Docker开机自启设置完成"
# 9. 验证安装
print_info "步骤9: 验证Docker安装..."
log "验证Docker版本"
DOCKER_VER=$(docker --version 2>/dev/null || echo "未安装")
DOCKER_COMPOSE_VER=$(docker-compose --version 2>/dev/null || echo "未安装")
echo "========================================"
print_info "安装完成!"
print_info "Docker版本: $DOCKER_VER"
print_info "Docker服务状态: $(systemctl is-active docker)"
print_info "开机自启状态: $(systemctl is-enabled docker)"
echo "========================================"
print_info "日志文件: $LOG_FILE"
# 10. 显示使用提示
echo ""
print_warn "使用说明:"
echo "1. 运行容器: docker run hello-world"
echo "2. 查看版本: docker --version"
echo "3. 查看镜像: docker images"
echo "4. 重启服务: systemctl restart docker"
log "Docker安装完成,版本: $DOCKER_VER"
}
# 主函数
main() {
echo "========================================"
echo " Docker 自动化安装脚本"
echo " 目标版本: ${DOCKER_VERSION}"
echo " 系统要求: CentOS/RHEL 7+"
echo "========================================"
echo ""
# 检查root权限
check_root
# 检查系统
if [ ! -f /etc/redhat-release ]; then
print_warn "检测到非CentOS/RHEL系统,可能不兼容!"
read -p "是否继续? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 0
fi
fi
# 开始安装
install_docker
}
# 执行主函数
main "$@"
2.安装docker-compose
#直接上传文件夹资源中的docker-compose文件到/usr/local/bin/下即可
#给docker-compose一个执行权限
chmod +x /usr/local/bin/docker-compose
四、镜像下载
提前准备好我们需要的镜像
docker pull nginx:1.18.0
docker pull mysql:5.7
docker pull openjdk:8u111-alpine
docker pull redis:5.0-alpine
docker pull nacos/nacos-server:2.0.2
五、mysql部署
1.创建目录上传资源
mkdir -p /opt/mysql/data/mysql
mkdir -p /opt/mysql/etc/
上传以下配置文件到/opt/mysql/etc/
#客户端设置
[client]
#mysql服务配置
[mysqld]
#服务器监听端口,默认为3306
port=3306
#数据存储位置
datadir=/var/lib/mysql
#Unix套接字文件路径
socket=/var/lib/mysql/mysql.sock
#MySQL服务唯一标识,开启二进制日志,做主从时需要
server-id=1
log-bin=mysql-bin
#不会跟随符号链接
symbolic-links=0
#服务进程pid文件路径
pid-file=/var/run/mysqld/mysqld.pid
#mysql字符集设置
character_set_server=utf8mb4
#mysql比较规则设置
collation_server=utf8mb4_general_ci
2.运行mysql容器编排
#vim docker-compose.yml
version: '2.1'
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
expose:
- 3306
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: "Admin123." #mysql密码
MYSQL_ALLOW_EMPTY_PASSWORD: "no" #是否允许密码为空
TZ: Asia/Shanghai
restart: always
volumes:
- /opt/mysql/data/mysql:/var/lib/mysql
- /opt/mysql/etc/my.cnf:/etc/my.cnf
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
healthcheck:
test: ["CMD", "mysql", "-u", "root", "-pAdmin123.", "-e", "SELECT 1"]
interval: 30s
timeout: 10s
retries: 5
六、nacos部署
1.创建目录
2.运行docker-compose
version: "3.8"
services:
nacos:
image: nacos/nacos-server:2.0.2
container_name: nacos
restart: always
ports:
- "8848:8848" # 主服务端口
- "9848:9848" # 用于gRPC通信
- "7848:7848" # 用于Jraft选举
environment:
# 设置为单机模式
- MODE=standalone
# 数据库配置 (需替换为你的实际配置)
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=192.168.17.138
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=Admin123.
# JVM调优参数 (可根据服务器内存调整)
- JVM_XMS=512m
- JVM_XMX=512m
- JVM_XMN=256m
volumes:
# 日志持久化
- ./logs/:/home/nacos/logs
# 数据持久化 (如需)
# - ./data/:/home/nacos/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
七、前端部署
1.创建目录
mkdir -p /opt/nginx
mkdir -p /opt/nginx/html #将前端代码上传到这里
mkdir -p /opt/nginx/conf
mkdir -p /opt/nginx/conf/conf.d
上传前端代码和配置文件
# vim /opt/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
# Gzip全局配置(建议放在这里而不是server块内)
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
# 上传文件大小限制(根据需要添加)
client_max_body_size 100M;
server {
listen 80;
server_name localhost;
# 前端静态资源
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# API反向代理到后端网关
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 代理超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# 跨域配置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
add_header Access-Control-Expose-Headers 'Authorization';
if ($request_method = 'OPTIONS') {
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain; charset=utf-8';
add_header Content-Length 0;
return 204;
}
}
# 文件上传路径代理
location /uploads/ {
proxy_pass http://localhost:8080/uploads/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 上传文件大小限制
client_max_body_size 100M;
}
# 错误页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# 放在http块末尾
include /etc/nginx/conf.d/*.conf;
}
2.运行dokcer-compose
# vim docker-compose.yml
version: '2.1'
services:
nginx:
image: nginx:1.18.0
container_name: nginx
restart: always
environment:
TZ: Asia/Shanghai
network_mode: host
volumes:
- /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /opt/nginx/conf/conf.d:/etc/nginx/conf.d
- /opt/nginx/html:/usr/share/nginx/html
- /opt/nginx/logs:/var/log/nginx
八、redis部署
1.创建目录上传包
mkdir -p /opt/redis && cd /opt/redis
mkdir -p /opt/redis/data
2.运行dokcer-compose
version: '2.1'
services:
redis:
image: redis:5.0-alpine # 使用官方Alpine镜像(轻量)
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- /opt/redis/data:/data # 持久化数据存储
# 可选的配置文件挂载(需要先创建redis.conf)
# - ./redis.conf:/usr/local/etc/redis/redis.conf
environment:
- TZ=Asia/Shanghai # 时区设置
command: redis-server --appendonly yes # 启用AOF持久化
九、后端部署
1.创建数据库导入数据
创建blog数据库,把数据导入到数据库中
2.项目上传
mkdir -p /opt/web/{blog-gateway,blog-home,blog-admin}
#切换到对应目录上传对应的包
3.修改配置文件
修改每一个java对应的配置文件
4.网关服务部署
网关的dockerfile
#vim /opt/web/blog-gateway/Dockerfile
FROM openjdk:8u111-alpine
MAINTAINER heber<heber@123.com>
# 设置工作目录为 /app
WORKDIR /app
# 将当前目录下的 target/所有东西复制到工作目录
COPY ./*.yml /app/
COPY ./*.jar /app/
# 定义容器启动后执行的命令,运行 Java 应用
CMD ["java", "-jar", "/app/blog-gateway-1.0.0.jar"]
网关镜像制作
docker build -t blog-gateway:1.0.1 .
网关的docker-compose
version: '2.1'
services:
blog-gateway:
image: blog-gateway:1.0.1
container_name: blog-gateway
restart: always
environment:
TZ: Asia/Shanghai
network_mode: host
查看日志
docker logs -f 容器名
#nacos注册中心进行验证
5.前台服务部署
前台的dockerfile
#vim /opt/web/blog-home/Dockerfile
FROM openjdk:8u111-alpine
MAINTAINER heber<heber@123.com>
# 设置工作目录为 /app
WORKDIR /app
# 将当前目录下的 target/所有东西复制到工作目录
COPY ./*.yml /app/
COPY ./*.jar /app/
# 定义容器启动后执行的命令,运行 Java 应用
CMD ["java", "-jar", "/app/blog-home-1.0.0.jar"]
前台镜像制作
docker build -t blog-home:1.0.1 .
前台的docker-compose
version: '2.1'
services:
blog-home:
image: blog-home:1.0.1
container_name: blog-home
restart: always
environment:
TZ: Asia/Shanghai
ports:
- "8081:8081"
查看日志
docker logs -f 容器名
#nacos注册中心进行验证
6.后台服务部署
后台的dockerfile
#vim /opt/web/blog-admin/Dockerfile
FROM openjdk:8u111-alpine
MAINTAINER heber<heber@123.com>
# 设置工作目录为 /app
WORKDIR /app
# 将当前目录下的 target/所有东西复制到工作目录
COPY ./*.yml /app/
COPY ./*.jar /app/
# 定义容器启动后执行的命令,运行 Java 应用
CMD ["java", "-jar", "/app/blog-admin-1.0.0.jar"]
后台镜像制作
docker build -t blog-admin:1.0.1 .
后台的docker-compose
version: '2.1'
services:
blog-admin:
image: blog-admin:1.0.1
container_name: blog-admin
restart: always
environment:
TZ: Asia/Shanghai
network_mode: host
查看日志
docker logs -f 容器名
#nacos注册中心进行验证
7.接口验证
1.前台页面blog数据
#get方法
http://ip:8080/api/home/articles