docker安装wagtail探索过程

221205构建成功

[docker安装wagtail核心配置文件]

进入容器报错

[root@iZ8vbajg9wo8iwynfb1lgeZ dc_wagtail]# docker exec -it wagtail bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

由于使用的是python镜像为基础镜像,使用的是精简系统alphine,没有安装bash,只有sh,所以进入容器无法使用bash命令。
需要用python

docker exec -it wagtail python

或者使用

docker exec -it wagtail /bin/sh

查找python位置

/ # find . -name 'python'
./usr/local/bin/python
/ # find . -name 'wagtail'
./usr/local/bin/wagtail
./usr/local/lib/python3.11/site-packages/wagtail
/ # 
/ # wagtail start app
Creating a Wagtail project called app
Success! app has been created
/ # cd app
/app # python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, home, sessions, taggit, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK

非交互创建用户

/app # echo "from django.contrib.auth.models import User; User.objects.create_superuser('myadmin', 'myemail@example.com', 'hunter2')" | python manage.py shell
/app # 

在docker中直接搭建时采用如下用户名

# echo "from django.contrib.auth.models import User; User.objects.create_superuser('myadmin', 'myemail@example.com', 'wagtailadmin')" | python manage.py shell

容器内部运行服务日志,不推荐这个开启方法

/app # echo "from django.contrib.auth.models import User; User.objects.create_superuser('myadmin', 'myemail@example.com', 'hunter2')" | python manage.py shell
/app # python manage.py runserverpython manage.py runserver
Unknown command: 'runserverpython'. Did you mean runserver?
Type 'manage.py help' for usage.
/app # python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 05, 2022 - 06:21:25
Django version 4.1.3, using settings 'app.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
/app # python manage.py runserver 127.0.0.1:80
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 05, 2022 - 06:24:19
Django version 4.1.3, using settings 'app.settings.dev'
Starting development server at http://127.0.0.1:80/
Quit the server with CONTROL-C.

docker中直接运行wagtail会无法访问

/app/app # python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 05, 2022 - 07:11:47
Django version 4.1.3, using settings 'app.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

需要指定地址0.0.0.0才行

/app/app # python manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 05, 2022 - 07:25:03
Django version 4.1.3, using settings 'app.settings.dev'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[05/Dec/2022 07:25:11] "GET / HTTP/1.1" 200 6830
[05/Dec/2022 07:25:11] "GET /static/css/app.css HTTP/1.1" 200 0
[05/Dec/2022 07:25:11] "GET /static/css/welcome_page.css HTTP/1.1" 200 2522
[05/Dec/2022 07:25:11] "GET /static/js/app.js HTTP/1.1" 200 0
Not Found: /favicon.ico
[05/Dec/2022 07:25:11] "GET /favicon.ico HTTP/1.1" 404 3365

cloudreve搭建过程

最近折腾nextcloud了,但是在我搭建好LNMP环境下安装总是不能完全正常工作。搜索解决办法也无效。所以还是打算再搭建一个cloudreve。
之前用过cloudreve,这个网盘无论搭建还是使用都很简单,界面也很清爽。
![[Pasted image 20221020183935.png]]
以前是直接运行应用程序,然后配置一下就可以了。
这一次打算用docker配置,这样会更方便管理且容易扩展。
下面记录了我的搭建过程。

  1. 创建目录结构
    这一步的目的是为了docker数据的持久化以及配置等文件的放置设置。
    首先进入你想要放置cloudreve的文件夹,运行以下命令:

    mkdir -vp cloudreve/{uploads,avatar} \
    && touch cloudreve/conf.ini \
    && touch cloudreve/cloudreve.db \
    && mkdir -p aria2/config \
    && mkdir -p data/aria2 \
    && chmod -R 777 data/aria2
  2. 新建docker-compose文件
  3. 在当前文件夹下新建docker-compose.yml文件,写入以下内容。
    yml文件内容:

    version: "3.8"
    services:
      cloudreve:
        container_name: cloudreve
        image: cloudreve/cloudreve:latest
        restart: unless-stopped
        ports:
          - "5212:5212"
          - "443:443"
        volumes:
          - temp_data:/data
          # - ./cloudreve:/cloudreve # 221018 add ,error
          - ./cloudreve/uploads:/cloudreve/uploads
          - ./cloudreve/conf.ini:/cloudreve/conf.ini
          - ./cloudreve/cloudreve.db:/cloudreve/cloudreve.db
          - ./cloudreve/avatar:/cloudreve/avatar
        depends_on:
          - aria2
      aria2:
        container_name: aria2
        image: p3terx/aria2-pro
        restart: unless-stopped
        environment:
          - RPC_SECRET=your_aria_rpc_token
          - RPC_PORT=6800
        volumes:
          - ./aria2/config:/config
          - temp_data:/data
    volumes:
      temp_data:
        driver: local
        driver_opts:
          type: none
          device: $PWD/data
          o: bind
  4. 运行docker-compose
    运行docker-compose有两种方式如下:

    # 后台运行模式,可以从 docker/docker-compose 的日志中获取默认管理员账户用户名和密码
    docker-compose up -d
    # 或者,直接运行,log 将会直接输出在当前控制台中,请注意退出之后保持当前容器运行
    docker-compose up

    第二种方式可以看到实时日志,使用<ctrl+z>

windows docker安装cloudreve

windows-docker安装cloudreve

在E盘新建E:/docker/dc1docker-compose.yml文件,写入

version: "3.4"
volumes:
  # tempData:
  cloudreve:
  uploads:
services:  
  cloudreve:
      container_name: cloudreve
      image: cloudreve/cloudreve:latest
      restart: unless-stopped
      ports:
        - "5212:5212"
        # - "443:443"
      volumes:
        - cloudreve:/cloudreve
        - uploads:/cloudreve/uploads

进入该文件夹,运行docker-compose启动:


E:\docker\dc1<!--autointro-->

docker网络模式

Docker有四种网络模式

1.host模式

容器和宿主机共享network,这时候localhost就可以访问宿主机端口了。

docker run -d --network host --name nginx

2.container模式

容器A和容器B共享network,就是说容器之间可以通过localhost直接访问。

docker run -d --network container --name nginx

3.none模式

容器与宿主机隔绝,不能联网,安全性最高,一般很少用到。

docker run -d --network none --name nginx

4.bridge模式(默认模式)

每个容器有自己的network,通过localhost访问不到宿主机

docker run -d --name nginx

docker-compose 中volumes参数说明

docker-compose 使用数据卷进行持久化
直接使用宿主机路径映射

  image: ghost
volumes:
- ./ghost/config.js:/var/lib/ghost/config.js

使用卷标映射

    services:
mysql:
image: mysql
container_name: mysql
volumes:
- mysql:/var/lib/mysql
...
volumes:
mysql:

第一种情况路径直接挂载到本地,比较直观,但需要管理本地的路径
第二种使用卷标的方式,比较简洁,但你不知道数据存在本地什么位置,下面说明如何查看docker的卷标

查看所有卷标

  docker volume ls 

查看批量的卷标

 $ docker volume ls | grep mysql
local               vagrant_mysql

查看具体的volume对应的真实地址


$ docker volume inspect vagrant_mysql
[
{
"Name": "vagrant_mysql",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/vagrant_mysql/_data"
}
]
```<!--autointro-->

docker相关

关于映射文件夹

查看和移除docker映射文件夹

[root@iZ8vbajg9wo8iwynfb1lgeZ dc1]# docker volume ls
DRIVER    VOLUME NAME
local     d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667
local     dc1_cheveretoconfig
local     dc1_cheveretodata
local     dc1_djangocmsapp
local     dc1_djangocmsdata
[root@iZ8vbajg9wo8iwynfb1lgeZ dc1]# docker volume rm d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667
d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667

docker查询容器所有文件夹映射

docker inspect easyimage | grep Mounts -A 20

docker daemon文件生效

sudo systemctl daemon-reload 
sudo systemctl restart docker

更新服务器时间-bash: ntpdate: 未找到命令

 yum install ntpdate
ntpdate -u ntp.api.bz

221018

docker在pull镜像的时候经常出现头一天晚上怎么都不行,第二天一早忽然就可以了。

docker查看所有容器占用的内存

docker stats

获取帮助

docker stats --help

“`perl

获取容器ID

docker ps =<!–autointro–>

window查看端口占用程序

1、打开cmd命令提示符窗口;
2、netstat -ano | findstr xxx(端口),查找端口占用的PID;
3、tasklist | findstr xxx(PID),输入后回车,界面第一列显示的即为占用端口的进程。

C:\Users\weiyo>netstat -ano | findstr 5212
TCP    127.0.0.1:5212         0.0.0.0:0              LISTENING       6220
TCP    127.0.0.1:51616        127.0.0.1:5212         TIME_WAIT       0
C:\Users\weiyo<!--autointro-->

根据局域网内主机名查询ip

通过ping主机名可以后去对方ip。

远程连接时不知道ip地址可以使用主机名连接。


C:\Users\Administrator>nbtstat -a PCMICRO-2OJFA00
以太网:
节点 IP 址址: [192.168.1.79] 范围 ID: []
找不到主机。
vEthernet (Default Switch) 3:
节点 IP 址址: [192.168.59.113] 范围 ID: []
找不到主机。
WLAN:
节点 IP 址址: [0.0.0.0] 范围 ID: []
找不到主机。
以太网 2:
节点 IP 址址: [169.254.126.76] 范围 ID: []
NetBIOS 远程计算机名称表
名称               类型         状态
---------------------------------------------
PCMICRO-2OJFA00<20<!--autointro-->

centos怎么查看哪些端口是开启

在 CentOS 上,你可以使用以下几种方法来查看已开启的端口:

  1. 使用 netstat 命令:

    netstat -tuln
    

    这将显示当前系统上所有的 TCP 和 UDP 连接以及监听的端口。你可以查找 “LISTEN” 状态的行,这表示该端口正在监听连接。

  2. 使用 ss 命令:

    ss -tuln
    

    类似于 netstat,ss 命令也可以显示当前系统上的 TCP 和 UDP 连接以及监听的端口。同样,你可以查找 “LISTEN” 状态的行来确定开启的端口。

  3. 使用 lsof 命令:

    lsof -i -P -n
    

    lsof 命令可以列出当前打开的文件和网络连接。使用上述命令,它将显示网络连接的相关信息,包括打开的端口。

  4. 使用 nmap 工具:
    如果你已经安装了 nmap 工具,你可以使用它来扫描主机上的端口情况。

    nmap localhost
    

    这将扫描本地主机上的所有端口,并显示它们的状态。

我的服务器可以用ss这个命令有些命令可能需要以 root 或具有足够权限的用户身份运行,以便显示完整的端口信息。<!–autointro–>

如何搭建自己的知识体系

读书和听课效率低的根源在于没有建立知识体系,导致学了很多内容,一直停留在低水平重复阶段,没有任何收获。

确立目标

目标的确定需要可以围绕3个维度:
1)当前需要解决的现实问题。当下什么困扰你,就去学什么样的书籍或课程。

2)以终为始,想清楚自己想要成为什么样的人,过怎样的人生。

张萌老师在《人生效率手册》中提到过7个人物法,找到你想要对标的榜样人物,拆解他们的核心技能是什么,再围绕某个技能深入地学。

3)根据兴趣爱好进行。当下对什么感兴趣,就学什么。如吉他、跳舞、厨艺等等。

主题阅读

根据目标,罗列出阅读主题的关键词
全网搜索关键词,获得一份主题书单
快速阅读(读目录、前言、序言),列出精读书单和略读书单。

阅读前,写下自己的问题,带着问题去书中寻找答案。

信息存取越难,提取信息越简单。为什么你读过的书都忘了呢?因为你没有做信息提取。

建议用“RIA便签法“、”思维导图法“等方式写读书笔记。

从最感兴趣的地方开始阅读。如果最想读的两三章中没有收获,基本就可以暂时不读了。这比全部看完都不记得要省时节力得多!

具体应用中,可使用快速阅读,针对难理解处,自问“这对我重要么?”重要则细阅,花时间弄懂;不重要则略过。

建立个人知识库

无论是课程还是书籍,每学完一个主题,需填充进个人的知识库里。

先用思维导图列出框架,再将知识、案例填充到自己的知识库中。

建议按照技能+知识的结构搭建个人知识库。

技能的学xi,需要动手实践,实践完成加深内化,形成自己的知识体系。

知识的学xi,需要按照学科类型进行整理,先搭建框架,再填充原理、案例和素材。

对于非虚构类书籍,需要整理观点和金句,留作以后素材。

定期回顾

知识库建立好之后,需要定期回顾。

按照艾宾浩斯遗忘曲线,睡前、24小时、1周后、1个月、随机复xi的节奏进行。