docker - 部署java/python项目

news2024/11/15 19:39:07

目录

1、docker - 部署 java 项目

1. 创建 mysql 容器

2. 验证mysql,dbserver 连接 mysql ,服务器ip:3306 ,账户:root 密码:123456

3. 创建tomcat容器

4. 验证:http://ip:80

5. 开发项目war包,放到tomcat容器webapps目录下即可

2、docker - 部署 python 项目

1. 在 gitee 下载源码zip包,并解压到D盘的 docker-python 目录下,pycharm中修改settings.py

2. 安装mysql容器

3. 安装gunicorn容器 [web的]

4. 安装nginx容器 [处理网站的静态资源]

5. 自定义 docker 网络

6. 关掉并删除所有容器

7. 停止不用的容器,确保部署代码的端口没有被占用,启动项目:

8. 重新执行以下 docker-compose up -d,并检查容器是否运行成功,如果失败,则docker logs -f 容器名,进行日志定位解决

9. 设置项目的初始密码

10. 验证

​🎁更多干货

完整版文档下载方式:


1、docker - 部署 java 项目

1. 创建 mysql 容器

docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.7.7
# 停止容器,删掉这个容器,重跑这条命令,不会重新下载镜像,会调用本地已经下载的镜像创建容器

2. 验证mysql,dbserver 连接 mysql ,服务器ip:3306 ,账户:root 密码:123456

3. 创建tomcat容器

docker run -d -p 80:8080 --rm daocloud.io/library/tomcat:8.0.45
# 80是因为腾讯云默认开启端口80,如果你设置了其他端口,需要在防火墙那开启端口

4. 验证:http://ip:80

5. 开发项目war包,放到tomcat容器webapps目录下即可

1、根目录下执行(war文件已经放到根目录下了): docker cp XGYSytest12.war 70:/user/local/tomcat/webapps
2、查看日志:docker logs -f tomcat容器标识
把war文件放进去,在浏览器就可以直接访问测试环境了,tomcat会解析war文件生成网站

2、docker - 部署 python 项目

1. 在 gitee 下载源码zip包,并解压到D盘的 docker-python 目录下,pycharm中修改settings.py

import os

# 报错不会显示在网页上
DEBUG = False
# 你允许访问的hostname名
ALLOWED_HOSTS = ["127.0.0.1", "localhost", "162.14.119.65"]
# 配置项目数据库,只修改了HOST的值为:数据库的容器名:auto_test_platform_mysql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'auto_test_plt',
        'USER': 'auto_test_plt',
        'PASSWORD': 'auto_test_plt',
        'HOST': 'auto_test_platform_mysql',
        'PORT': '3306',
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

2. 安装mysql容器

项目根目录下创建文件 docker-compose.yml

Services:
  auto_test_platform_mysql:
    image: daocloud.io/library/mysql:5.7.7
    restart: always
    container_name: auto_test_platform_mysql
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./default.cnf:/etc/mysql/conf.d/default.cnf
    ports:
      - 3306:3306
    environments:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asiz/Shanghai
      MYSQL_DATA_BASE: auto_test_plt
      MYSQL_USER: auto_test_plt
      MYSQL_PASSWORD: auto_test_plt
    networks:
      - net1

项目外面的创建文件 default.cnf

[mysqld]
character-set-server = utf8mb4
collection-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

 

3. 安装gunicorn容器 [web的]

Gunicorn是一个WSGI HTTP Server,是针对Python的、在Unix系统上运行的、用来解析HTTP请求的网关服务。特点是:能和大多数的Python web框架兼容;使用简单;轻量级的资源消耗;高性能。相当于java里面的tomcat,对静态资源的处理不够好,所以需要nginx来管理静态资源

  • 1、创建 requirements.txt
Django==3.2.9
mysqlclient==2.1.0
gunicorn

  • 2、创建 dockerfile
FROM python:3.8
COPY ./requirements.txt /app/
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt
ENTRYPOINT cd /app/auto_test_platform; python manage.py collectstatic -c --no-input; python manage.py migrate; gunicorn -b 0.0.0.0:8000 auto_test_platform.wsgi;

  • 3、编辑 docker-compose.py 文件,制定 gunicorn容器
auto_test_platform_gunicorn:
  build:
    conttext: ./
    dockerfile: Dockerfile
  restart: always
  environments:
    TZ: Asia/Shanghai
  image: auto_test_platform:1.0
  container_name: auto_test_platform_gunicorn
  working_dir: /app/auto_test_platform
  volumes:
    - ./auto_test_platform:/app/auto_test_platform
  ports:
    - 8000:8000
  depends_on:
    - auto_test_platform_mysql
  networks:
    - net1

4. 安装nginx容器 [处理网站的静态资源]

  • 1、先处理nginx配置文件
server {
	listen		80;
	server_name	auto_test_platform;
	
	location /static/ {
		autoindex on;
		alias /static/;
	}
	
	location / {
		proxy_pass http://auto_test_platform_gunicorn:8000;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

  • 2、编辑 docker-compose.py 文件,制定 nginx 容器
auto_test_platform_nginx:
  image: nginx:latest
  container_name: auto_test_platform_nginx
  volumes:
    - ./auto_test_platform/static:/static
    - ./auto-test-platform-nginx.conf:/etc/nginx/conf.d/default.conf
  ports:
    - 8088:80
  depends_on:
    - auto_test_platform_gunicorn
  networks:
    - net1

5. 自定义 docker 网络

把3容器通过桥接方式放在一个网络,方便他们可以用容器名相互访问

Services:
  auto_test_platform_mysql:
    image: daocloud.io/library/mysql:5.7.7
    restart: always
    container_name: auto_test_platform_mysql
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./default.cnf:/etc/mysql/conf.d/default.cnf
    ports:
      - 3306:3306
    environments:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asiz/Shanghai
      MYSQL_DATA_BASE: auto_test_plt
      MYSQL_USER: auto_test_plt
      MYSQL_PASSWORD: auto_test_plt
    networks:
      - net1

  auto_test_platform_gunicorn:
    build:
      conttext: ./
      dockerfile: Dockerfile
    restart: always
    environments:
      TZ: Asia/Shanghai
    image: auto_test_platform:1.0
    container_name: auto_test_platform_gunicorn
    working_dir: /app/auto_test_platform
    volumes:
      - ./auto_test_platform:/app/auto_test_platform
    ports:
      - 8000:8000
    depends_on:
      - auto_test_platform_mysql
    networks:
      - net1

  auto_test_platform_nginx:
    image: nginx:latest
    container_name: auto_test_platform_nginx
    volumes:
      - ./auto_test_platform/static:/static
      - ./auto-test-platform-nginx.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8088:80
    depends_on:
      - auto_test_platform_gunicorn
    networks:
      - net1

networks:
  net1:
    driver: bridge

6. 关掉并删除所有容器

docker-compose down

7. 停止不用的容器,确保部署代码的端口没有被占用,启动项目:

docker-compose up -d 启动日志:


[+] Running 7/8
 ⠿ auto_test_platform_nginx Pulled                                                                                                                                                                       7.5s
   ⠿ e5ae68f74026 Pull complete                                                                                                                                                                          4.1s
   ⠿ 21e0df283cd6 Pull complete                                                                                                                                                                          4.9s
   ⠿ ed835de16acd Pull complete                                                                                                                                                                          5.0s
   ⠿ 881ff011f1c9 Pull complete                                                                                                                                                                          5.0s
   ⠿ 77700c52c969 Pull complete                                                                                                                                                                          5.1s
   ⠿ 44be98c0fab6 Pull complete                                                                                                                                                                          5.2s
 ⠿ auto_test_platform_gunicorn Error                                                                                                                                                                    35.5s
Sending build context to Docker daemon  72.39MB
Step 1/4 : FROM python:3.8
3.8: Pulling from library/python
5e0b432e8ba9: Pull complete
a84cfd68b5ce: Pull complete
e8b8f2315954: Pull complete
0598fa43a7e7: Pull complete
83098237b6d3: Pull complete
b92c73d4de9a: Pull complete
ef9b6ee59783: Pull complete
c1f6285e6406: Pull complete
a0ee73333012: Pull complete
Digest: sha256:881e0df149c29af8b29a973a9e80814dae6cddf123fe38a0bcac71864c85fb8a
Status: Downloaded newer image for python:3.8
 ---> f746089c9d02
Step 2/4 : COPY ./requirements.txt /app/
 ---> cf8dab81cbac
Step 3/4 : RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt
 ---> Running in 23f583394c99
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting Django==3.2.9
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a8/ca/e88eb097959c48cd313dfc4bc394699a48fe5c158ed3a64c13e4fa46c1fd/Django-3.2.9-py3-none-any.whl (7.9 MB)
Collecting mysqlclient==2.1.0
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/de/79/d02be3cb942afda6c99ca207858847572e38146eb73a7c4bfe3bdf154626/mysqlclient-2.1.0.tar.gz (87 kB)
Collecting gunicorn
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e4/dd/5b190393e6066286773a67dfcc2f9492058e9b57c4867a95f1ba5caf0a83/gunicorn-20.1.0-py3-none-any.whl (79 kB)
Collecting pytz
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d3/e3/d9f046b5d1c94a3aeab15f1f867aa414f8ee9d196fae6865f1d6a0ee1a0b/pytz-2021.3-py2.py3-none-any.whl (503 kB)
Collecting asgiref<4,>=3.3.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fe/66/577f32b54c50dcd8dec38447258e82ed327ecb86820d67ae7b3dea784f13/asgiref-3.4.1-py3-none-any.whl (25 kB)
Collecting sqlparse>=0.2.2
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/05/40/d836d55fb3f467243ee839ab7b814822fda522cd395fa41e282684e71ee5/sqlparse-0.4.2-py3-none-any.whl (42 kB)
Requirement already satisfied: setuptools>=3.0 in /usr/local/lib/python3.8/site-packages (from gunicorn->-r /app/requirements.txt (line 3)) (57.5.0)
Building wheels for collected packages: mysqlclient
  Building wheel for mysqlclient (setup.py): started
  Building wheel for mysqlclient (setup.py): finished with status 'done'
  Created wheel for mysqlclient: filename=mysqlclient-2.1.0-cp38-cp38-linux_x86_64.whl size=113481 sha256=af552566c448c8f6fcf2b984745c92ee1614d375be5afe41ec7187ce962b1645
  Stored in directory: /root/.cache/pip/wheels/46/f8/f5/836501cfe21c884346cf554d596e63d4107dc5a30e5c6922ea
Successfully built mysqlclient
Installing collected packages: sqlparse, pytz, asgiref, mysqlclient, gunicorn, Django
Successfully installed Django-3.2.9 asgiref-3.4.1 gunicorn-20.1.0 mysqlclient-2.1.0 pytz-2021.3 sqlparse-0.4.2
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 21.2.4; however, version 21.3.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
 ---> cda5bf0476f1
Step 4/4 : ENTRYPOINT cd /app/auto_test_platform; python manage.py collectstatic -c --no-input; python manage.py migrate; gunicorn -b 0.0.0.0:8000 auto_test_platform.wsgi;
 ---> Running in 3ca4e1573bc8
 ---> aa0ca134a4be
Successfully built aa0ca134a4be
Successfully tagged auto_test_platform:1.0

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[+] Running 4/4
 ⠿ Network docker-python_net1             Created                                                                                                                                                        0.1s
 ⠿ Container auto_test_platform_mysql     Started                                                                                                                                                        0.5s
 ⠿ Container auto_test_platform_gunicorn  Started                                                                                                                                                        1.4s
 ⠿ Container auto_test_platform_nginx     Started   

8. 重新执行以下 docker-compose up -d,并检查容器是否运行成功,如果失败,则docker logs -f 容器名,进行日志定位解决

 

9. 设置项目的初始密码

  • docker images
  • docker exec -it gun容器名 bash,执行 python manage.py createsuperuser

10. 验证

  • gunciorn容器正常: https://ip:8000/admin
  • nginx容器正常:https://ip:8088/admin

​🎁更多干货


 完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MOOC 作业】第2章 应用层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 什么是持久性连接&#xff1f;什么是非持久性连接&#xff1f;持久性连接与非持久性连接区别如何&#xff1f; 持久性连接&#xff1a;每个请求/响应对都经同一个 TCP 连接发送。非持久性连接&#xff1a;每个请求/…

【1401. 圆和矩形是否有重叠】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个以 (radius, xCenter, yCenter) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2) &#xff0c;其中 (x1, y1) 是矩形左下角的坐标&#xff0c;而 (x2, y2) 是右上角的坐标。 如果圆和矩…

灰狼优化算法GWO,优化VMD,适应度函数为最小样本熵或最小包络熵(可自行选择,代码已集成好,很方便修改)包含MATLAB源代码

近期评论区有小伙伴私信需要灰狼优化算法GWO法化VMD的&#xff0c;所以打算再写一篇。 与之前的文章不同&#xff0c;这篇文章作者考虑到&#xff0c;大家有可能会以最小样本熵或最小包络熵为适应度函数的&#xff0c;在这个程序中将会直接把样本熵和包络熵集成&#xff0c;在…

了解Facebook的算法如何工作,提高您的帖子曝光率

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数亿用户在上面发布内容、互动交流。然而&#xff0c;由于用户数量巨大&#xff0c;每天产生的信息量也是相当惊人的。 为了让用户看到最有用和最相关的内容&#xff0c;Facebook采用了一种复杂的算法来过滤和排序用户…

迅为RK3568开发板Buildroot 系统设置状态栏

Weston 支持在 weston.ini 配置文件的 shell 段设置状态栏的背景色、位置,以及在 launcher 段设置快捷启动程序&#xff0c;修改文件系统的/etc/xdg/weston/weston.ini 文件&#xff0c;如下所示&#xff1a; [shell] # 颜色格式为 ARGB8888 panel-color0xff002244 # top|…

【新星计划回顾】第八篇学习-多表联表查询(完结)

&#x1f3c6;&#x1f3c6;时间过的真快&#xff0c;这是导师回顾新星计划学习的第八篇文章&#xff01; 在学习过程中&#xff0c;学员们也咨询了很多问题&#xff0c;我把一些问题整理以文章形式总结分享下。 最近这段时间非常忙&#xff0c;虽然导师首次参与新星计划活动已…

[内核笔记1]内核文件结构与缓存——inode和对应描述

由来&#xff1a;公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列&#xff0c;然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作&#xff0c;尽量的减少Nginx的阻塞。 但是由于System/V消息队列在使用前需要规定消息长度&#xff0c;且…

从古欧洲的四大族群变迁梳理欧洲两千年历史脉络

我们看今天的欧洲&#xff0c;不难发现有几种完全不同的生活方式和行为习惯&#xff0c;以北欧三国再加英德与荷兰等国人为代表&#xff0c;他们信奉新教&#xff0c;勤劳&#xff0c;做事一丝不苟&#xff0c;颇为绅士&#xff0c;所以瑞典、英国、德国创造出了极其辉煌的工业…

canvas判断画笔是否铺满区域

判断画布形状是否填满和百分比 <body> <canvas id"myCanvas" width"300" height"150" style"border:1px solid #d3d3d3;"> </canvas> <script> var cdocument.getElementById("myCanvas"); var ctx…

智慧水务调度系统-智慧水务大数据可视化管理系统

平台概述 智慧水务调度系统平台&#xff08;智慧水务大数据可视化管理系统平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧…

数据库模型设计案例分享(GaussDB版)

目录 一、前言 二、应用系统数据库设计的基本流程 三、数据库模型设计 1、概念结构设计阶段 2、逻辑结构设计阶段 3、物理结构设计阶段 四、小结 一、前言 GaussDB数据库是一款企业级分布式数据库&#xff0c;支持集中式和分布式两种部署形态。它面向金融互联网交易和政…

面试官:说下简历中提到的优化……

作者&#xff1a;张力尹 先来点废话&#xff1a; 听说最近 Android 岗位变多了&#xff0c;你去面试了么&#xff1f; 面试官&#xff1a;你简历中提到了卡顿优化&#xff0c;做了哪些优化呢&#xff0c;展开说说。 你&#xff1a;哦&#xff0c;脑子飞速闪过网上的文章&#x…

Python模块pytest全局初始化和局部初始化前置后置操作

在 pytest 中&#xff0c;我们可以通过 conftest.py 文件来实现全局的前置和后置操作。 conftest.py 文件是一个特殊的 pytest 文件&#xff0c;它可以定义一些 fixture 和钩子函数&#xff0c;这些 fixture 和钩子函数可以在当前目录及其子目录下的所有测试文件中使用。 下面…

VR全景如何制作,可以用在哪些领域?

引言&#xff1a; 虚拟现实&#xff08;VR&#xff09;全景制作正在以惊人的速度改变着我们的感官体验。通过VR全景技术&#xff0c;我们可以身临其境地探索虚拟世界&#xff0c;感受前所未有的沉浸式体验。 一&#xff0e;如何进行VR全景制作 1.什么是VR全景制作&#xff1f…

【雕爷学编程】Arduino动手做(127)---2004A LCD液晶屏模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【状态估计】基于卡尔曼滤波器和扩展卡尔曼滤波器用于 INS/GNSS 导航、目标跟踪和地形参考导航研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

计算机网络——自顶向下方法(第五章学习记录)

本章学习网络层&#xff1a;控制平面 控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理。 概述 通过前面的学习&#xff0c;我们已经知道转发表&#xff0…

Android使用echart展示图表

Android使用echart展示酷炫的图表 最近开发的时候&#xff0c;遇到了柱状图&#xff0c;刻度图等各种图表的展示。查资料发现&#xff0c;Android用的的最多的是MPAndroidChart&#xff0c;我也尝试了&#xff0c;一般的柱状图和饼状图都可以实现&#xff0c;但是刻度图就不行…

【复习《剑指Offer》1-5题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第六天 6/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

第二章:项目环境搭建【基于Servlet+JSP的图书管理系统】

环境搭建 1.项目工具 本项目涉及到的工具都有在云盘提供&#xff0c;自行下载即可 JDK8IDEA2021Tomcat8.5MySQL的客户端工具SQLYog… 2.项目搭建 通过IDEA创建maven项目。勾选脚手架工具。选择maven-archetype-webapp 设置项目的基础信息 3.基本配置 3.1 JDK配置 JDK使用的…