目录
1.3.2.1 将jar包、dockerfile文件放在linux同一个文件夹下
2.1 从docker run到dockercompose的过渡
1 手动部署(白雪版)
1.1 创建网络
指令:
#创建网络
docker network create
#查看网络
docker network ls
示例:
注意:
1.2 mysql的部署
1.2.1 准备
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='set names utf8mb4'
-- 导出 mall 的数据库结构
drop database if exists `hmall`;
create database if not exists `hmall`;
use `hmall`;
-- 导出 表 hmall.address 结构
drop table if exists `address`;
create table if not exists `address` (
-- 其它内容
);
-- 其它内容
1.2.2 部署
指令:
docker run -d \
--name mysql \
-p 3306:3306 \
-e tz=asia/shanghai \
-e mysql_root_password=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
--network project \
mysql
指令解析:
运行结果:
1.3 java项目的部署
1.3.1 准备
1.3.1.1 将java项目打成jar包
pom.xml中添加插件:
<project xmlns="http://maven.apache.org/pom/4.0.0"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 其它内容 -->
<build>
<pluginmanagement>
<plugins>
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-compiler-plugin</artifactid>
<version>3.8.1</version>
<configuration>
<source>11</source> <!-- depending on your project -->
<target>11</target> <!-- depending on your project -->
</configuration>
</plugin>
</plugins>
</pluginmanagement>
</build>
</project>
使用maven打包:
找到jar包:
1.3.1.2 编写dockerfile文件
代码如下:
# 基础镜像
from openjdk:11.0-jre-buster
# 设定时区
env tz=asia/shanghai
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone
# 拷贝jar包
copy hm-service.jar /app.jar
# 入口
entrypoint ["java", "-jar", "/app.jar"]
代码解析(大同小异,改改就能用):
1.3.2 部署
1.3.2.1 将jar包、dockerfile文件放在linux同一个文件夹下
1.3.2.2 构建镜像
指令:
docker build -t hmall .
指令解读:
运行截图:
1.3.2.3 创建并运行容器
指令:
#部署并运行容器
docker run -d --name hmall --network project -p 8080:8080 hmall
#查看容器日志
docker logs hmall
运行截图:
1.4 前端项目的部署
1.4.1 准备挂载文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/json;
sendfile on;
keepalive_timeout 65;
server {
listen 18080;
# 指定前端项目所在的位置(容器内的位置)
location / {
root /usr/share/nginx/html/hmall-portal;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
rewrite /api/(.*) /$1 break;
# 容器在同一个网络,可以使用容器名访问,hamll就代表了其ip
proxy_pass http://hmall:8080;
}
}
server {
listen 18081;
# 指定前端项目所在的位置(容器内的位置)
location / {
root /usr/share/nginx/html/hmall-admin;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /api {
rewrite /api/(.*) /$1 break;
# 容器在同一个网络,可以使用容器名访问,hamll就代表了其ip
proxy_pass http://hmall:8080;
}
}
}
1.4.2 部署
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network project \
nginx
1.5 测试
1.5.1 获取宿主机linux的ip地址
sudo yum install net-tools -y
1.5.2 进行访问
2 dockercompose自动化部署(章鱼哥直接拿捏)
2.1 从docker run到dockercompose的过渡
docker run -d \
--name mysql \
-p 3306:3306 \
-e tz=asia/shanghai \
-e mysql_root_password=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
--network project
mysql
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
tz: asia/shanghai
mysql_root_password: 123
volumes:
- "/root/mysql/conf:/etc/mysql/conf.d"
- "/root/mysql/data:/var/lib/mysql"
networks:
- new
networks:
new:
name: project
docker run参数 | dockercompose指令 | 说明 |
---|---|---|
--name | container_name | 容器名称 |
-p | ports | 设置端口映射 |
-e | environment | 环境设置 |
-v | volumes | 数据卷挂载 |
--network | networks | 网络设置 |
镜像名称(这里是mysql) | image | 镜像名称 |
2.2 常用命令
docker compose [options] [command]
options和command都是可选参数,比较常见的有,该图片来自黑马程序员:
2.3 部署
2.3.1 编写docker-compose.yml文件
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
tz: asia/shanghai
mysql_root_password: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: project
2.3.2 部署运行
docker compose up -d
发表评论