把自己制作的镜像,上传到hub.docker
| |
| 1 给镜像打标签 (id号还是一样) |
| docker tag 03cf0f47aec0 liuqingzheng/djagno_books |
| 2 登录 |
| docker login |
| 3 推送 |
| docker push liuqingzheng/djagno_books |
搭建私有仓库
| |
| -使用docker搭建harbor |
| |
| |
| |
| -1 拉取registry镜像 |
| docker pull registry |
| -2 把镜像运行成容器 |
| docker run -di --name=registry -p 5000:5000 registry |
| |
| -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 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 |
| |
| |
| |
| |
| |
| |
| -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 |
| |
| |
| |
一:编写一个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 |
| |
| ping redis |
| |
| |
| |
| apt-get update |
| apt-get install inetutils-ping |
| ping redis |
| |
| |
| |
| docker-compose up |
docker-compose命令
| docker-compose up |
| docker-compose up -d |
| |
| |
| docker-compose stop |
| docker-compose down |
| docker-compose start |
| docker-compose ps |
| docker-compose images |
| |
| docker-compose exec yml文件中写的service /bin/bash |
| |
| |
| -python3.8 环境 djagno +uwsgi+代码 |
| -nginx软件 |
| -mysql 5.7 |
| -redis 5 |
| |
| |
| -djagno项目容器:python3.8 构建的django,模块,uwsgi,代码 |
| -nginx容器:目录映射,映射到宿主机,代理vue前端,编译后的静态文件 |
| -mysql 容器:创建,创用户,密码,luffy库 |
| -redis 容器,跑起来即可 |
| |
| |
| |
| -git clone https://gitee.com/liuqingzheng/luffy.git |
| -目录结构 |
| luffy |
| luffy_api |
| Dockerfile |
| luffycity |
| docker_compose_files |
| |
| docker-compose.yml |
| -docker-compose.yml内容 |
| -Dockefile 文件 |
| - 修改前端链接后台的地址:luffycity/src/access/xx.js |
| -编译:npm run build |
| |
| -提交到git |
| |
| -要部署的服务器:git clone https://gitee.com/liuqingzheng/luffy.git |
| -docker,docker-compose装好 |
| -docker-compose up |
| -访问宿主机的 80 端口 |
| |
Dockerfile
| |
| 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", "./luffy.ini"] |
| |
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 |
| |
| 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: |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)