上一篇简单介绍了下Docker的常用指令和给出了nginx、PHP、Mysql镜像通过docker run启动容器的实例。
首先Dockerfile并不能代替docker run,Dockerfile主要是用来预执行部分命令并构建镜像。
然后使用 docker run 命令指定该镜像让运行容器时达到简化命令的目的。
然后通过docker build命令构建一个新的镜像,最后还是要用到docker run命令,配置参数,指定新构建的镜像运行容器。
为什么不能直接代替 docker run ? 我初步推测是因为如果使用了像-v,--network,--ip这些参数如果用来构建镜像,将毫无扩展性。
当然Dockerfile还有更多的高阶用法,之后自己挖掘...

- 阅读剩余部分 -

前言

大体分三部分:

  • 镜像与容器运行、进入、互通与网络
  • Dockerfile
  • docker-compose

基本是我的学习Docker的一个历程,从最麻烦(逐条命令输入)到看起来相应比较简便的方式(docker-compose.yml文件)构建一个LNMP环境。
因为也是学习没多长时间,尽量会在能力范围内对文章内的知识点进行描述和归纳,当然会有对应的官方文档。
除官方文档外的信息建议先自己思考下,本文仅个人的拙见,欢迎评论指正。

- 阅读剩余部分 -

最近在学Python,简单看了点特性和基础语法就开始自己写一个爬虫,目标是爬本博客。
项目github地址
因为写的时候参考的是github上的CrawlerHot爬虫项目,里面用到了with as语法写入文件,
开始只是初略了解到了如果用with as写文件的话是不需要file.close()。
然后继续跟着项目用了with as来执行ThreadPoolExecutor开线程来执行任务,但是没有深入了解为什么。
原.png
根据上图81行我原本是执行了shutdown(),但后面经网友指点了下with as的话是需不需要pool.shutdown()的,因为上下文管理器会自动帮你执行。
我就想上下文管理器是个什么? 但是感觉和之前写入文件时不需要file.close()有异曲同工之妙。

- 阅读剩余部分 -

需求

用户每日点击签到,获得x积分;用户连续签到y天后额外获得z积分。
x,y,z分别由后台配置。
需要记录用户今天是否已签到当前连续签到数本月签到列表数据供前端展示

表结构

CREATE TABLE `sign_in_logs` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
      `year` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '年',
      `month` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '月',
      `date_list` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '签到日期列表(按位储存)',
      `count` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '累计连续签到的天数,到一定数量后清零',
      `last_date` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '上一次签到的日期',
      `created_at` timestamp NULL DEFAULT NULL,
      `updated_at` timestamp NULL DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `sign_in_logs_user_id_index` (`user_id`),
      KEY `sign_in_logs_year_month_index` (`year`,`month`),
      KEY `sign_in_logs_date_list_index` (`date_list`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

- 阅读剩余部分 -