当前位置: 代码网 > 服务器>服务器>Linux > Docker-完整项目的部署(保姆级教学)

Docker-完整项目的部署(保姆级教学)

2024年08月02日 Linux 我要评论
②build是用来构建镜像的,context表示资源路径(点表示当前路径),dockerfile用于寻找我们的Dockerfile文件(默认就是Dockerfile,可以不写,除非将Dockerfile改名了)挂载后容器和主机的对应文件夹就可以相互影响。我们可以看到,两者实际上是一一对应的,这是语法风格不同罢了,其中version: "3.8"是DockerCompose的语法版本。一共需要两个文件(夹),一个是我们的前端项目文件夹,一个是我们的nginx配置文件,将他们都放在linux同一个文件夹下,

目录

1 手动部署(白雪版)

1.1 创建网络

1.2 mysql的部署

1.2.1 准备

1.2.2 部署

1.3 java项目的部署

1.3.1 准备

1.3.1.1 将java项目打成jar包

1.3.1.2 编写dockerfile文件

1.3.2 部署

1.3.2.1 将jar包、dockerfile文件放在linux同一个文件夹下

1.3.2.2 构建镜像

1.3.2.3 创建并运行容器

1.4 前端项目的部署

1.4.1 准备挂载文件

1.4.2 部署

1.5 测试

1.5.1 获取宿主机linux的ip地址

1.5.2 进行访问

2 dockercompose自动化部署(章鱼哥直接拿捏)

2.1 从docker run到dockercompose的过渡

2.2 常用命令

2.3 部署

2.3.1 编写docker-compose.yml文件

2.3.2 部署运行


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指令说明
--namecontainer_name容器名称
-pports设置端口映射
-eenvironment环境设置
-vvolumes数据卷挂载
--networknetworks网络设置
镜像名称(这里是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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com