Will&Do 意致 Blog 从零开始 (v1)docker部署

再借图说话:😂 willanddo blog v1版本的实现,该版本中完成了后端:业务使用了laravel框架,并使用docker-compose 完成后端的部署

业务

后端只对编辑页面做了登录限制,

数据备份是直接使用mysql镜像进行库dump

Creating database dumps

Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the mysqld server. A simple way to ensure this is to use docker exec and run the tool from the same container, similar to the following:

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
Restoring data from dump files

For restoring data. You can use docker exec command with -i flag, similar to the following:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

 

主机部署

因为薅了几个阿里腾讯的主机羊毛,各个主机的情况不一样,有时候服务需要迁移,这里使用docker方案完成底层部署,迁移的时候直接就可以迁移走了,

docker方案流行的又有以下几种:

  1. 纯docker部署,只写了Dockerfile启动编排全靠手动,太麻烦
  2. docker-compose,docker自带的一个小型的docker编排工具,可以把一个项目的各个服务(应用,数据库,缓存)编排到一个docker-compose.yml文件里,小巧轻便,适用于单主机
  3. docker swarm,docker官方的分布式编排工具,对标k8s,可以将多个docker主机组成集群(想想羊毛主机的带宽不适应)
  4. k8s,谷歌的docker编排工具,很强,(但这几个小主机装完资源都用完了)
  5. LaraDock ,laravel社区提供的docker部署方案,集成了很多东西

对比之下,先用docker-compose来部署吧

这里有个很好的sample项目:atsea-sample-shop-app

下面是blog项目结构图:

docker-compose.yml:

version: "3.1"

services:
  reverse_proxy:
    build:
      context: reverse_proxy
      dockerfile: Dockerfile
    ports:
      - 81:81
    volumes:
      - ./app/laravel:/app/laravel:rw
    depends_on:
      - php-fpm

  php-fpm:
    build:
      context: ./app
      dockerfile: Dockerfile.phpfpm
    volumes:
      - ./app/laravel:/app/laravel:rw
    ports:
      - 9000:9000
    depends_on:
      - mysql
      - redis
    links:
      - redis
      - mysql

  mysql:
    build:
      context: database
      dockerfile: Dockerfile
    restart: always
    ports:
      - "9366:3306"
    volumes:
      - ./data/mysql:/var/lib/mysql

  redis:
    image: redis
    ports:
      - "9379:6379"
 

启动的时候切换到非root账号在项目目录下执行docker-compose up -d后整个项目就起来了

注:为什么docker-compose中secret不起作用?这里有个坑docker-compose 不能使用secret,docker secret 是基于swarm模式的,把一些机密信息保持到主节点(manager),任务节点使用的挂载到内存的/run/secret/下面

posted @ 2020-07-20 11:33  timseng  阅读(172)  评论(0)    收藏  举报