首页 > 其他分享 >Docker简易项目部署

Docker简易项目部署

时间:2023-08-01 23:12:20浏览次数:35  
标签:容器 compose 部署 redis 简易 5000 mysql Docker docker

Docker简易项目部署

私有仓库

# docker pull拉取,都是从hub.docker 上拉取的,公司自己做的docker镜像,放在哪比较合适

# docker push 推到 hub.docker,如果是公开,大家都可以下载,公司内部只希望公司的人用,其他人不能用

# 公司内部,需要有个仓库管理自己的镜像----》私有仓库  私服
	
#以后拉取镜像时,先从自己服务器拉取,没有再去hub.docker拉取,咱们自己制作的经常,传到私有仓库中,别人看不到

把自己制作的镜像,上传到hub.docker

# 操作步骤:
	1 给镜像打标签 (id号还是一样)
    docker tag 03cf0f47aec0 liuqingzheng/djagno_books
    2 登录
    docker login  # 输入用户名密码
    3 推送
    docker push liuqingzheng/djagno_books

搭建私有仓库

# harbor私有仓库:企业中使用多一些,有好看的图形化界面
	-使用docker搭建harbor
# 咱们讲的是:registry  ,老一点,没有图形化界面,不太好看,使用docker搭建

# 搭建步骤:
	-1 拉取registry镜像
    	docker pull registry
    -2 把镜像运行成容器
    	docker run -di --name=registry -p 5000:5000 registry
        # 你使用浏览器访问宿主机5000端口,就能看到一个web服务
	-3 宿主机浏览器访问:http://10.0.0.205:5000/v2/_catalog
	-4 修改配置文件
    	vi /etc/docker/daemon.json
        # 我
         {"insecure-registries":["10.0.0.205:5000"]} 
        # 你们
        {"insecure-registries":["192.168.1.143:5000"]} 
        
    -5 重启docker
    	systemctl restart docker
    -6 启动私有仓库容器
    	docker start registry
    -7 给镜像打标签
    	docker tag books_django 10.0.0.205:5000/books_django
    	
	-4 把自己制作的镜像,传到私有仓库
    	docker push 10.0.0.205:5000/books_django
    
	-5 公司内部的人,你们都要能访问到这个:http://10.0.0.205:5000/v2/_catalog
    	docker pull	10.0.0.205:5000/books_django

docker-compose介绍

# 使用了docker 面临一个比较大的问题,如果一个djagno项目,使用mysql,redis,不要一次性把所有服务都放到一个容器中,每个服务一个容器,批量的管理多个容器,比较难以操作,于是有了docker-compose

# Docker Compose是一个能一次性定义和管理多个Docker容器的工具,单机容器编排【定义和管理】
	-docker swarm:公司里用的不多
	-k8s是多机容器编排工具,go语言写了k8s
    

    Compose中定义和启动的每一个容器都相当于一个服务(service)
    Compose中能定义和启动多个服务,且它们之间通常具有协同关系
    管理方式:
    使用YAML文件来配置我们应用程序的服务。
    使用单个命令(docker-compose up),就可以创建并启动配置文件中配置的所有服务。
    
    
# 安装:
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.14.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# yaml 文件写法
	

docker-compose部署flask项目

第一步:编写一个Dockerfile

FROM python:3.8
COPY . /app
WORKDIR /app
RUN pip install flask redis -i https://pypi.tuna.tsinghua.edu.cn/simple
EXPOSE 5000
CMD [ "python", "app.py" ]

编写flask代码

from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

@app.route('/')
def hello(): 
    redis.incr('hits')
    return '你好! 查看 %s 次, hostname 是 %s.\n' % (redis.get('hits'),socket.gethostname())


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

docker-compose的yaml文件 docker-compose.yml

version: "3"

services:

  redis:
    image: redis

  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:5000
    environment:
      REDIS_HOST: redis
# 如果redis服务的名字叫redis,我在web服务中(容器中),根据redis名字就能拿到容器
	ping redis
    
    # 进入到了web,ping redis
    # 安装ping命令,
    apt-get update
    apt-get install inetutils-ping
    ping redis
    
    
# 一键部署:redis,和flask ,每个都在一个容器中
docker-compose up

docker-compose命令

docker-compose up  # 会自动搜索当前路径下的 docker-compose.yml文件
docker-compose up -d  # 后台执行,一般我们看日志输出,不用这个


docker-compose stop  # 停止,不会删除容器和镜像
docker-compose down # 停止,并删除关联的容器
docker-compose start  # 启动yml文件管理的容器
docker-compose ps    # 正在运行的容器
docker-compose images # docker-compose管理的容器

docker-compose exec yml文件中写的service /bin/bash  # 进入到容器内

docker-compose部署项目前后端

# 一台服务器:
	-python3.8 环境 djagno +uwsgi+代码
    -nginx软件
    -mysql 5.7
    -redis 5
    
# 每个都做成一个容器
	-djagno项目容器:python3.8 构建的django,模块,uwsgi,代码
    -nginx容器:目录映射,映射到宿主机,代理vue前端,编译后的静态文件
    -mysql 容器:创建,创用户,密码,luffy库
    -redis 容器,跑起来即可
    
    
# docker-compose yml文件配置,一键启动
	-git clone https://gitee.com/liuqingzheng/luffy.git
    -目录结构
    luffy
        luffy_api  # 后台项目
        	Dockerfile
		luffycity  # 前台项目
        docker_compose_files # 放数据的文件夹
        
        docker-compose.yml #ymal文件
	-docker-compose.yml内容
	-Dockefile 文件
    - 修改前端链接后台的地址:luffycity/src/access/xx.js
    -编译:npm run build
    
    -提交到git
    
    -要部署的服务器:git clone https://gitee.com/liuqingzheng/xxx.git
    -docker,docker-compose装好
    -docker-compose up
    -访问宿主机的 80 端口

Dockerfile

#依赖镜像名称和ID
FROM python:3.8
#指定镜像创建者信息
MAINTAINER lqz
#切换工作目录
RUN mkdir /soft
WORKDIR /soft
COPY ./requestment.txt /soft/requestment.txt
RUN pip install -r requestment.txt -i https://pypi.doubanio.com/simple
#CMD ["uwsgi", "-x", "./luffy.xml"]
CMD ["uwsgi", "./luffy.ini"]
#CMD ["python", "manage_pro.py", "runserver"]

docker-compose yml文件配置,一键启动

        version: "3"

        services:
          nginx:
            image: nginx
            container_name: luffy_nginx
            ports:
              - "80:80"
              - "8000:8000"
            restart: always
            volumes:
              - ./luffycity/dist:/var/www/html
              - ./docker_compose_files/nginx:/etc/nginx/conf.d
            depends_on:
              - django
            networks:
              - web

          django:
            build:
              context: ./luffy_api
              dockerfile: Dockerfile
            container_name: luffy_django
        #    command: python manage_pro.py makemigrations && python manage_pro.py migrate && uwsgi ./luffy.ini
            restart: always
            ports:
              - "8080:8080"
            volumes:
              - ./luffy_api:/soft
            environment:
              - TZ=Asia/Shanghai
            depends_on:
              - mysql
              - redis
            networks:
              - web
          redis:
            image: redis:6.0-alpine
            container_name: luffy_redis
            ports:
              - "6379:6379"
            volumes:
              - ./docker_compose_files/redis/data:/data
              - ./docker_compose_files/redis/redis.conf:/etc/redis/redis.conf
            command: redis-server /etc/redis/redis.conf
            networks:
              - web
          mysql:
            image: mysql:5.7
            container_name: luffy_mysql
            restart: always
            ports:
              - "3306:3306"
            env_file:
              - ./docker_compose_files/mysql.env
            volumes:
              - ./docker_compose_files/mysql/data:/var/lib/mysql
              - ./docker_compose_files/mysql/logs:/var/log/mysql
              - ./docker_compose_files/mysql/conf:/etc/mysql/conf.d
            networks:
              - web

        networks:
          web:

标签:容器,compose,部署,redis,简易,5000,mysql,Docker,docker
From: https://www.cnblogs.com/joseph-bright/p/17599377.html

相关文章

  • Docker简易部署
    Docker简易部署应用部署mysql部署#在宿主机上不需要安装mysql了,直接拉取mysql镜像,运行成容器即可#部署步骤 -1创建文件夹mkdir/root/mysql mkdir/root/mysql/conf.d mkdir/root/mysql/data/-2基于镜像运行成容器(端口映射,目录映射)dockerrun......
  • docker 入门
    docker入门虚拟化技术介绍#虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟......
  • Linux简易功能介绍
    Linux简易功能介绍虚拟机关键配置名词解释#虚拟⽹络编辑器说明桥接模式#可以访问互联⽹!!! 配置的地址信息和物理主机⽹段地址信息相同,容易造成地址冲突NAT模式#可以访问互联⽹!!! 配置的地址信息和物理主机⽹段地址信息不同,造成不了地址冲突仅主机模式#不可以......
  • Docker
    1.docker是一个快速交付应用,运行应用的技术 1.1docker可以将应用及其依赖和运行环境(系统依赖库)打包成一个镜像,可以移植到任意的linux系统上 1.2运行时利用沙箱技术让各个容器隔离,各个应用互不干扰,启动移动通过一条命令完成,方便快捷 ......
  • centos7.9 部署elasticsearch 7.17.8 集群
    准备基本环境名称ip地址cpu内存es监听端口redis-65110.0.2.18c64G9200redis-65210.0.2.28c64G9200redis-65310.0.2.38c64G9200搭建集群10.0.2.1主机配置基本环境#更新hosts文件cat/etc/hosts10.0.2.1 es-node-110.0.2.2 es-node-21......
  • 【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无
    问题一:在ADFPipeline部署ARMTemplate报错“Deploymentfailed--therequestcontentsizeexceedsthemaximumsizeof4MB”【解答】4MB是一个固定限制,不可以修改其大小。 如果Template文件太大,需要把拆分成多个后,通过LinkedTemplate的方式部署。 在部署的时候,ARM通过main......
  • F5 LTM 知识点和实验 8-配置和管理高可用性部署
    第八章:配置和管理高可用性部署设备集群(deviceserviceclustering)与许多关键网络和IT基础设施组件一样,BIGIP系统可以部署在高可用性(HA)配置中,以支持持续的应用程序交付,而不会在很长一段时间内中断服务。当前BIG-IP系统的HA功能主要由DSC(DeviceServiceClustering)特性提供。......
  • 【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无
    问题一:在ADFPipeline部署ARMTemplate报错“Deploymentfailed--therequestcontentsizeexceedsthemaximumsizeof4MB”【解答】4MB是一个固定限制,不可以修改其大小。 如果Template文件太大,需要把拆分成多个后,通过LinkedTemplate的方式部署。 在部署的时候,ARM通......
  • 使用Maven插件为SpringBoot应用构建Docker镜像
    Docker开启远程API用vim编辑器修改docker.service文件#生成证书opensslgenrsa-aes256-outca-key.pem4096opensslreq-new-x509-days365-keyca-key.pem-sha256-outca.pemopensslgenrsa-outserver-key.pem4096opensslreq-subj"/CN=localhost"-sha256-......
  • Docker 发布Jenkins
    更新系统:sudoaptupdatesudoaptupgrade安装必要的依赖:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker官方的GPG密钥:curl-fsSLhttps://download.docker.com/linux/debian/gpg|sudogpg--dearmor-o/usr/......