docker-compose实战----微服务架构一键部署yaml模板

app:一个后端web服务
celery:异步服务队列
redis:消息中间件
db:数据持久化存储
nginx:web服务器,将请求代理到app


version: "3"
services:
    app:
        restart: always
        build: . # 代表当前目录
        # 容器启动时需要运行的命令
        command: bash -c "python3 manage.py collectstatic --no-input && python3 manage.py migrate && gunicorn --timeout=30 --workers=4 --bind :8001 blog.wsgi:application" 
        volumes:
            - ".:/code"  # 将当前目录映射到容器中的code路径下,在宿主机修改文件相当于修改了容器内的文件,容器被删除了,宿主机的中文件也不会删除
            - "static-volume:/code/static" # 由docker容器自动管理的静态文件卷,当容器删除后也会存在,在下次构建容器的时候可以指定,
            - "media-volume:/code/media" # 由docker容器自动管理的静态文件卷,当容器删除后也会存在,在下次构建容器的时候可以指定,
        expose:   # expose 仅暴露给其他容器,而 ports 会暴露给其他容器和宿主机。
            - "8001"  # 绑定容器的端口和宿主机的端口,访问宿主机的端口就是访问容器的端口,实现访问
        depends_on:
            - db        # 依赖数据库容器,db容器启动后app容器才能启动
            - redis

        networks:
            - web_network   # 指定可以通信的网络,类似容器之间的局域网,只有处于相同的网络中才能互相访问
            - db_network
    celery:
        restart: always
        build: .
        command: bash -c "celery -A my_celery_task worker -l info"
        volumes:
            - ".:/code"
        depends_on:
            - db
            - redis
        networks:
            - web_network
            - db_network

    redis:
        image: redis:alpine
        ports:
            - "6379:6379"
        restart: always
        networks:
            - db_network

    db:
        restart: always  # 失败了自动重启
        image: mysql:5.7   # 指定mysql的镜像文件和版本
        volumes: 
            - "/root/data/mysql:/var/lib/mysql"
        ports:
            - "3306:3306"
        environment:
            - "MYSQL_ROOT_PASSWORD=123456"  # 指定数据库root用户的密码为123456
            - "MYSQL_DATABASE=blog"         # 指定数据库名称
        networks:
            - db_network
  
    nginx:
         restart: always
         image: nginx
         ports:
            - "80:8001"
            - "443:8002"
         volumes:
            - static-volume:/code/static
            - media-volume:/code/media
            - ./config/nginx:/etc/nginx/conf.d
            - ./config/nginx:/code/config/nginx

         depends_on:
            - app
         networks:
            - web_network

networks:
    web_network:
        driver: bridge
    db_network:
        driver: bridge


volumes:
    static-volume:
    media-volume:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪荡的三木先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值