当前位置:   article > 正文

Docker项目部署_docker 部署项目

docker 部署项目

目录

一、前端项目部署

1、上传文件

2、开启容器

3、测试

二、后端项目部署

1、打包java项目

2、将jar包和Dockerfile文件长传到Linux系统

3、构建镜像

4、开启容器

 5、测试

三、DockerCompose快速部署

基本语法


一、前端项目部署

1、上传文件

 里面包括页面和配置文件

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/json;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. server {
  11. listen 18080;
  12. # 指定前端项目所在的位置
  13. location / {
  14. root /usr/share/nginx/html/hmall-portal;
  15. }
  16. error_page 500 502 503 504 /50x.html;
  17. location = /50x.html {
  18. root html;
  19. }
  20. location /api {
  21. rewrite /api/(.*) /$1 break;
  22. # hhjava应用容器名
  23. proxy_pass http://hh:8080;
  24. }
  25. }
  26. server {
  27. listen 18081;
  28. # 指定前端项目所在的位置
  29. location / {
  30. root /usr/share/nginx/html/hmall-admin;
  31. }
  32. error_page 500 502 503 504 /50x.html;
  33. location = /50x.html {
  34. root html;
  35. }
  36. location /api {
  37. rewrite /api/(.*) /$1 break;
  38. proxy_pass http://hh:8080;
  39. }
  40. }
  41. }
2、开启容器

 docker run -d \
  --name nginx \   #容器名称
  -p 18080:18080 \  #映射端口
  -p 18081:18081 \
  -v /root/nginx/html:/etc/nginx/html \  #自定义挂载数据卷
  -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \  #挂载配置文件
  --network demo \  #网络这里用的自定义网络
  nginx #镜像

3、测试

二、后端项目部署

1、打包java项目
2、将jar包和Dockerfile文件长传到Linux系统

3、构建镜像

docker build -t test .

 

4、开启容器

docker run -d --name hh -p 8080:8080 --network demo test

docker run -d 后台启动并运行 

--name hh 名称

-p 8080:8080 端口

--network demo 网络

test 镜像

 查看日志,成功运行

注意:要确保mysql的ip和程序设置的ip在一个频段

mysql的ip:docker inspect mysql

 程序设置的ip:docker inspect hh

 5、测试

三、DockerCompose快速部署

手动部署项目太麻烦了,而Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。

docker-compose.yml文件的基本语法可以参考官方文档:

Compose file version 3 reference | Docker Docs

docker-compose文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于service就是在定义某个应用的运行时参数,因此与docker run参数非常相似。

举例来说,用docker run部署MySQL的命令如下:

  1. docker run -d \
  2. --name mysql \
  3. -p 3306:3306 \
  4. -e TZ=Asia/Shanghai \
  5. -e MYSQL_ROOT_PASSWORD=123 \
  6. -v ./mysql/data:/var/lib/mysql \
  7. -v ./mysql/conf:/etc/mysql/conf.d \
  8. -v ./mysql/init:/docker-entrypoint-initdb.d \
  9. --network hmall
  10. mysql

如果用docker-compose.yml文件来定义,就是这样:

  1. version: "3.8"
  2. services:
  3. mysql:
  4. image: mysql
  5. container_name: mysql
  6. ports:
  7. - "3306:3306"
  8. environment:
  9. TZ: Asia/Shanghai
  10. MYSQL_ROOT_PASSWORD: 123
  11. volumes:
  12. - "./mysql/conf:/etc/mysql/conf.d"
  13. - "./mysql/data:/var/lib/mysql"
  14. networks:
  15. - new
  16. networks:
  17. new:
  18. name: hmall

 参数说明:

docker run 参数

docker compose 指令

说明

--name

container_name

容器名称

-p

ports

端口映射

-e

environment

环境变量

-v

volumes

数据卷配置

--network

networks

网络

 如图所示:

编写好docker-compose.yml文件,就可以部署项目了。常见的命令:

Overview of docker compose CLI | Docker Docs

基本语法
docker compose [OPTIONS] [COMMAND]

类型

参数或指令

说明

Options

-f

指定compose文件的路径和名称

-p

指定project名称。project就是当前compose文件中设置的多个service的集合,是逻辑概念

Commands

up

创建并启动所有service容器

down

停止并移除所有容器、网络

ps

列出所有启动的容器

logs

查看指定容器的日志

stop

停止容器

start

启动容器

restart

重启容器

top

查看运行的进程

exec

在指定的运行中容器中执行命令

 docker-compose.yml文件示例:

  1. version: "3.8"
  2. services:
  3. mysql:
  4. image: mysql
  5. container_name: mysql
  6. ports:
  7. - "3306:3306"
  8. environment:
  9. TZ: Asia/Shanghai
  10. MYSQL_ROOT_PASSWORD: 123
  11. volumes:
  12. - "./mysql/conf:/etc/mysql/conf.d"
  13. - "./mysql/data:/var/lib/mysql"
  14. - "./mysql/init:/docker-entrypoint-initdb.d"
  15. networks:
  16. - hm-net
  17. hmall:
  18. build:
  19. context: .
  20. dockerfile: Dockerfile
  21. container_name: hmall
  22. ports:
  23. - "8080:8080"
  24. networks:
  25. - hm-net
  26. depends_on:
  27. - mysql
  28. nginx:
  29. image: nginx
  30. container_name: nginx
  31. ports:
  32. - "18080:18080"
  33. - "18081:18081"
  34. volumes:
  35. - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
  36. - "./nginx/html:/usr/share/nginx/html"
  37. depends_on:
  38. - hmall
  39. networks:
  40. - hm-net
  41. networks:
  42. hm-net:
  43. name: hmall

 示例:

  1. # 1.进入root目录
  2. cd /root
  3. # 2.删除旧容器
  4. docker rm -f $(docker ps -qa)
  5. # 3.删除hmall镜像
  6. docker rmi hmall
  7. # 4.清空MySQL数据
  8. rm -rf mysql/data
  9. # 5.启动所有, -d 参数是后台启动
  10. docker compose up -d
  11. # 结果:
  12. [+] Building 15.5s (8/8) FINISHED
  13. => [internal] load build definition from Dockerfile 0.0s
  14. => => transferring dockerfile: 358B 0.0s
  15. => [internal] load .dockerignore 0.0s
  16. => => transferring context: 2B 0.0s
  17. => [internal] load metadata for docker.io/library/openjdk:11.0-jre-buster 15.4s
  18. => [1/3] FROM docker.io/library/openjdk:11.0-jre-buster@sha256:3546a17e6fb4ff4fa681c3 0.0s
  19. => [internal] load build context 0.0s
  20. => => transferring context: 98B 0.0s
  21. => CACHED [2/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 0.0s
  22. => CACHED [3/3] COPY hm-service.jar /app.jar 0.0s
  23. => exporting to image 0.0s
  24. => => exporting layers 0.0s
  25. => => writing image sha256:32eebee16acde22550232f2eb80c69d2ce813ed099640e4cfed2193f71 0.0s
  26. => => naming to docker.io/library/root-hmall 0.0s
  27. [+] Running 4/4
  28. ✔ Network hmall Created 0.2s
  29. ✔ Container mysql Started 0.5s
  30. ✔ Container hmall Started 0.9s
  31. ✔ Container nginx Started 1.5s
  32. # 6.查看镜像
  33. docker compose images
  34. # 结果
  35. CONTAINER REPOSITORY TAG IMAGE ID SIZE
  36. hmall root-hmall latest 32eebee16acd 362MB
  37. mysql mysql latest 3218b38490ce 516MB
  38. nginx nginx latest 605c77e624dd 141MB
  39. # 7.查看容器
  40. docker compose ps
  41. # 结果
  42. NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
  43. hmall root-hmall "java -jar /app.jar" hmall 54 seconds ago Up 52 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
  44. mysql mysql "docker-entrypoint.s…" mysql 54 seconds ago Up 53 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
  45. nginx nginx "/docker-entrypoint.…" nginx 54 seconds ago Up 52 seconds 80/tcp, 0.0.0.0:18080-18081->18080-18081/tcp, :::18080-18081->18080-18081/tcp

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/715664
推荐阅读
相关标签
  

闽ICP备14008679号