西区代码小仓库 - docker-compose
type: channel
link: https://www.lisper517.top/tag/docker-compose/
items: Docker树莓派实践——Pi Dashboard
items: Docker实践——如何查阅wiki百科及V2Ray
items: Docker实践——用于小诊所的开源医疗记录系统
items: Docker树莓派实践——qbittorrent
items: Docker实践——gogs及https与备份
items: Docker树莓派实践——Typecho及其备份
items: Docker树莓派实践——frp（附dashboard开启https、frp双向验证）
items: Docker树莓派实践——LNMP
items: Docker入门（二）

Docker树莓派实践——Pi Dashboard
type: item
date: 2022-08-27T05:47:00+00:00
description: 步骤/目录： 0.Pi Dashboard简介 1.LNP部署Pi Dashboard本文首发于个人博客https://lisper517.top/index.php/archives/36/，转载请注明出处。本文的目的是使用docker、docker-compose在树莓派上运行Pi Dashboard。本文实验日期为2022年8月27日。本文使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ）。0.Pi Dashboard简介在windows系统中，可以用任务管理器便捷地查看电脑的CPU、显卡等使用情况；对于树莓派，这样的信息收集起来比较麻烦，好在有大神开发了Pi Dashboard，这是一个网页查看树莓派状态的工具，详细介绍在 https://make.quwj.com/project/10 。简单来说Pi Dashboard的部署和Typecho类似，也是放在nginx的文件夹里、搭配php使用，不同点是不需要mysql。1.LNP部署Pi Dashboard这里用docker-compose运行nginx、php服务，最后把Pi Dashboard放在nginx的网页根目录下即可。在树莓派上进行如下操作：mkdir -p /docker/pi_dashboard/conf/nginx mkdir /docker/pi_dashboard/www mkdir /docker/pi_dashboard/ssl_cert docker pull nginx:1.23.1 docker pull php:8.1-fpm nano /docker/pi_dashboard/conf/nginx/default.conf写入以下内容：server { listen 50443 ssl; server_name www.lisper517.top; ssl on; ssl_certificate /ssl_cert/.pem文件名; ssl_certificate_key /ssl_cert/.key文件名; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { index index.html index.htm index.php default.html default.htm default.php; root /var/www/html; } location ~\.php$ { fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; } error_page 497 https://$host:50443$request_uri; }这是使用https的配置，注意更改 www.lisper517.top 和ssl证书的两个文件名。如果只使用http，则写入如下内容：server { listen 50443; location / { index index.html index.htm index.php default.html default.htm default.php; root /var/www/html; } location ~\.php$ { fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; } }但是要注意，无论使用http还是https，都尽量不要把这个页面开放到公网。然后编写compose模板：nano /docker/pi_dashboard/docker-compose.yml写入如下内容：version: "3.9" services: nginx: image: nginx:1.23.1 ports: - "50443:50443" volumes: - /docker/pi_dashboard/conf/nginx:/etc/nginx/conf.d - /docker/pi_dashboard/…

Docker实践——如何查阅wiki百科及V2Ray
type: item
date: 2022-08-14T15:14:00+00:00
description: 步骤/目录： 1.背景介绍 2.方法一：wiki镜像站 3.方法二：离线wiki 4.方法三：香港服务器+V2Ray （0）V2Ray介绍 （1）服务器购买与初始化 （2）准备工作 （3）用docker安装V2Ray （4）安装V2Ray客户端及设置 （5）V2Ray的高级操作 a.网页伪装 b.服务器备份 c.VLESS + TCP + TLS + WS d.双服务器 （6）服务器被封禁的表现 5.方法四：购买服务 附录：不使用docker，直接安装V2Ray（不推荐）本文首发于个人博客https://lisper517.top/index.php/archives/31/，转载请注明出处。本文的目的是查阅wiki百科。本文实验日期为2022年8月12日。本文使用的云服务器为阿里云轻量应用服务器（香港），系统镜像 Docker 19.03 。1.背景介绍笔者使用gnuhealth（一款开源HIS软件，见 Docker实践——用于小诊所的开源医疗记录系统 ）时，其安装页面、树莓派镜像介绍都在wikibooks上（ https://en.wikibooks.org/wiki/GNU_Health/Installation 和 https://en.wikibooks.org/wiki/GNU_Health/Embedded ）。由于wikibooks没有对我国大陆提供服务，所以需要使用其他方法访问。另外，wiki实际上指的是一类浏览器访问、用户协同编辑其内容的网站，其中以wiki百科最为出名。本文中的wiki一般指代wiki百科或wikibooks。文中介绍的前两种方法仅能访问wiki百科，最后一种方法可访问wiki百科或wikibooks。2.方法一：wiki镜像站这是最简单的方法，主要依靠其他人搭建的wiki百科镜像网页来访问。这些网页一般是接到访问请求后转发给wikipedia，然后接收响应、把响应转发回来。目前（2022年8月）可用的镜像站有以下这些：英文wiki，有 https://en.jinzhao.wiki/wiki/Main_Page 中文wiki，有 https://chinois.jinzhao.wiki/wiki/Wikipedia:%E9%A6%96%E9%A1%B5 https://www.wikipedia.ahut.cf/ https://zh.wikipedia.hfut.cf/wiki/Wikipedia:%E9%A6%96%E9%A1%B5若镜像站停止服务，可随时bing或baidu搜索 “wiki镜像” ，查询新的镜像站。使用时，比如对 https://en.wikipedia.org/wiki/GNU_Health 这个原网址，把 /wiki/ 后面的部分复制就行，比如使用第一个镜像站时改成 https://en.jinzhao.wiki/wiki/GNU_Health 即可。3.方法二：离线wiki这一部分的内容主要参考了 这篇文章 。大致的方法是将wiki百科网站内容全部下载（全网站内容已被别人打包为 .zim文件 ，全部的英文wiki大概 95GB ，中文wiki 20GB ），然后通过特殊的阅读器（kiwix）浏览。第一步，在 kiwix官网下载页 下载阅读器。kiwix提供了Android、windows、linux、mac、ios、树莓派的软件安装，还有可用于chrome、firefox、edge三种浏览器的插件版kiwix。第二步，到 kiwix提供的wiki下载页面 下载zim文件。比如英文wiki百科、全站页面就是名称为 wikipedia (English) ， Number of articles/Flavour 这一列为 all maxi ，其大小目前为95.2GB（这个zim包是2022年5月打包的）。右边对应的有网页下载（Download）和BT种子下载（BitTorrent），BT下载要快很多。中文的wikipedia、 all maxi 只有20.32GB，打包时间是2022年4月。下载完成后，打开kiwix阅读器，用kiwix阅读器打开本地的zim文件即可。这种方法还可在局域网搭建服务器，使局域网各机器没有zim文件也能阅读wikipedia（但是要装kiwix），笔者未实践。4.方法三：香港服务器+V2Ray如果想拿到gnuhealth的一手资料，wikibooks是必须上的。为了达到这个目标，可使用类似wiki百科镜像站的原理，使用自己的云服务器，进行请求、响应的转发。另外，使用V2Ray访问wiki时务必注意低调，多看少说。要记住，看wiki是为了学习国外技术，师夷长技以制夷。（0）V2Ray介绍首先介绍一下V2Ray，以下涉及V2Ray的部分主要…

Docker实践——用于小诊所的开源医疗记录系统
type: item
date: 2022-08-08T13:53:00+00:00
description: 步骤/目录： 0.准备工作 （1）购买并设置树莓派 （2）购买并设置服务器 （3）准备软件 1.方法一：docker + openmrs 2.方法二：gnuhealth 的树莓派系统 3.方法三：gnuhealth 直接安装（无法使用） 4.了解：新致“开源”医疗 附录：通过公网访问EMR或HIS本文首发于个人博客https://lisper517.top/index.php/archives/29/，转载请注明出处。本文的目的是搭建一个可用于小诊所的电子病历系统，省去一笔开支费用。有些方法中会用到docker、docker-compose。本文实验日期为2022年8月7日。本文使用的云服务器为阿里云轻量应用服务器（杭州），系统镜像为 Docker 19.03；树莓派为 4B 8GB 版，系统镜像是Pi OS的64位桌面版，名为 2022-04-04-raspios-bullseye-arm64.img 。笔者有医学背景，最近需要一个电子病历系统。医疗方面的电子化，可分EMR（electronic medical record）和HIS（hospital information system），EMR侧重于电子病历，而HIS侧重于使用计算机技术对整个医院进行管理，HIS包括EMR，HIS也难得多。但是如果只是想拥有一个私人的电子病历系统，或者开小诊所想使用电子病历，那么可以考虑使用一些开源的EMR或HIS（界面都是全英文的，但是一直用就熟练了，可以输入中文）。当然，这里的电子病历比较简陋，只是起到一个记录、方便查阅（相较于纸质病历）的作用，一般不应起法律效力。如果是单纯的医生、并不懂计算机技术，可以只看这篇文章，遇到中间的注释不懂的，如果没有实际影响可以跳过不看。如果对计算机技术感兴趣的，可从笔者的第一篇文章看起，这里用到的所有技术都能通过之前的文章学会。最后需要说明，下文中的所有方法，是让EMR或HIS在树莓派（一种微型电脑）上运行，服务器只提供一个公网ip、方便公网访问，如果只是在局域网中用（比如说自己开诊所，把树莓派放到诊所里面运行）就可以不买服务器；如果是上班时间摸鱼，想把病人记在自己的私人病历上，而且上班地方的电脑能连接外网，这种情况就可以买一个服务器。另外，以下的这些方法仅供娱乐，如果真的自己开诊所，建议找一些免费的病历系统用，付费的其实也不贵，1000￥/年差不多了。0.准备工作准备工作中，需要购买并设置树莓派；购买服务器，对服务器进行一些初始设置；在自己的电脑上准备相关软件。下文中出现的一个或多个X，一般指代不同的变化的数字。（1）购买并设置树莓派树莓派的详细介绍可参考 树莓派型号、参数与作用 （笔者之前的文章，赶时间的可以不看），粗略来说树莓派是一种便宜的微型电脑，可以用来运行一些任务。购买渠道上，建议到淘宝搜索 树莓派4B ，购买内存4GB或8GB版的，8GB版的目前（2022年8月）淘宝最便宜的是900￥左右，另外需要购买一个树莓派外壳（挑一个外观好看的）、树莓派官方电源、2张64GB的sd卡（2张以备不时之需）、1个读卡器（用于电脑读取sd卡），大概总成本在1100￥（8GB版）或900￥（4GB版）。另外还应该有一台自己的笔记本或台式机（这里需要是装windows系统，因为有些软件就是windows下运行的）。收到东西后，组装一下，把树莓派装进外壳，插上 type C 电源线，此时先不插sd卡。现在要准备一些软件。到 这个网址 下载树莓派的官方刻录工具（用于把树莓派的操作系统写入sd卡），下载的文件名为 imager-1.X.X.exe ，其中 1.X.X 是版本号，选最新的版本，下载完成后安装；点击 这个网址 下载树莓派的操作系统，下载的文件名为 20XX-XX-XX-raspios-bullseye-arm64.img.xz ，然后用7z或rar等软件把它解压成 .img 文件。sd卡插上读卡器、连接到自己的电脑，打开官方刻录工具，操作系统选择 使用自定义镜像 ，找到刚才下载的镜像；sd卡选择插上的sd卡（如果同时连了其他U盘，注意不要选到这些其他的设备），点击右下角的齿轮图标（设置），勾选 开启SSH服务 ，在下面的 Set username and password 里设置一个自己喜欢的用户名及密码（后续还要设置很多的密码，笔者建议所有的地方都用同一个密码，这个密码要8个字符以上，同时包含大小写字母和数字），勾选 配置WiFi ，输入自己的wifi名和密码（如果用网线直连树莓派，则可以不设置wifi。推荐用网线直连），点击保存，点击烧录，等待一会儿。之后弹出sd卡（烧录工具会自动弹出sd卡）并拔下读卡器、sd卡，把sd卡插到树莓派上（方向不要插反了，有金手指的一面朝向树莓派板），连上电源即开机…

Docker树莓派实践——qbittorrent
type: item
date: 2022-08-01T12:41:00+00:00
description: 步骤/目录： 1.编写compose模板 2.运行并验证本文首发于个人博客https://lisper517.top/index.php/archives/25/，转载请注明出处。本文的目的是使用docker、docker-compose在树莓派上运行qbittorrent。本文实验日期为2022年8月1日。本文使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ）。之前的文章中曾提到过qbittorrent，详见 树莓派+Samba+frp搭建NAS（网络云存储） 。简单来说，qbittorrent的作用是离线下载，一般搭配NAS使用。在docker官方仓库网页进行搜索，最后笔者选用的是linuxserver/qbittorrent镜像，其下载量为100M+，一个月前更新。1.编写compose模板如前所述，笔者使用树莓派+samba搭建了NAS，挂载一块硬盘到分享目录，路径为/home/samba_user/shared。如果没有NAS也无所谓，但由于树莓派本身存储较小，最好还是外接存储。另外，samba目前在官方仓库没有下载量大的官方镜像，所以仍然是直接在本地跑。在树莓派上进行如下操作：docker pull linuxserver/qbittorrent mkdir -p /docker/qbittorrent/conf mkdir /docker/qbittorrent/ssl_certificate id samba_user #这里的samba_user是为samba创建的系统用户 #输出uid=1002、gid=1003 nano /docker/qbittorrent/docker-compose.yml写入以下内容：version: "3.9" services: qbittorrent: image: linuxserver/qbittorrent environment: - PUID=1002 - PGID=1003 - TZ=Asia/Shanghai - WEBUI_PORT=8080 volumes: - /docker/qbittorrent/conf:/config - /home/samba_user/shared/DLs:/downloads - /docker/qbittorrent/ssl_certificate:/ssl_certificate ports: - "8080:8080" - "6881:6881" - "6881:6881/udp" restart: unless-stopped这里需要解释一下docker-qbittorrent的注意事项。PUID、PGID用于指定一位宿主机系统用户，该用户需要拥有宿主机的下载目录（本例中为/home/samba_user/shared），这样才不会有读写权限的问题，使用 id 用户名 可查看uid、gid。2.运行并验证cd /docker/qbittorrent docker-compose config docker-compose up若要后台运行docker-frpc，可使用docker-compose up -d命令。这时使用ufw打开8080、6881端口，即可浏览器登录到 树莓派ip:8080 ，出现qbittorrent网页UI，初始用户名密码为admin和adminadmin。在顶部工具栏下方，右边的齿轮图标为设置。接下来对qbittorrent进行一些初始设置：在 Web UI 中将语言改为中文；在 下载 中，将 默认Torrent管理模式 改为自动，勾选 保存未完成的torrent到 、 复制.torrent文件到（这两个目录自选），下面的 下载完成时发送电子邮件到 用的也是SMTP、有需要的可以打开， Torrent完成时运行外部程序 也可根据自身需要打开；在 速度 中，可以选择下载速度限制；在 BitTorrent 中，可调整最大同时下载数；在 Web UI 中，可设置使用HTTPS，修改用户名密码。

Docker实践——gogs及https与备份
type: item
date: 2022-07-31T15:23:00+00:00
description: 步骤/目录： 1.准备工作 2.编写compose模板 3.运行并验证 4.gogs使用https 5.gogs备份本文首发于个人博客https://lisper517.top/index.php/archives/24/，转载请注明出处。本文的目的是使用docker、docker-compose在云服务器上运行gogs。本文实验日期为2022年7月28日。本文使用的云服务器为阿里云轻量应用服务器，系统镜像 Docker 19.03 。之前的文章中曾介绍过gogs，详见 树莓派+云服务器，gogs+frp搭建私有git 。简单来说，使用gogs可以搭建一个私有的轻量级的git服务器，一般gogs用于个人或小微企业。在docker官方仓库网页可以搜索到官方gogs镜像即 gogs/gogs ，其下载量为50M+，3天前更新。下面就使用该镜像+mysql镜像搭建gogs服务。1.准备工作和frp的部署一样，笔者准备了一台云服务器，如果只打算在局域网用gogs也可以在本地机器上运行。在服务器上准备目录，拉取镜像：mkdir -p /docker/gogs/data/gogs mkdir /docker/gogs/data/mysql mkdir -p /docker/gogs/conf/mysql docker pull gogs/gogs docker pull mysql:8.0.29这里需要简单说明一下docker-gogs的使用。容器内的22端口用于git命令相关操作，3000用于网页访问；容器内的/data目录包含了仓库、gogs的个性化设置。2.编写compose模板编写compose模板：vim /docker/gogs/docker-compose.yml写入以下内容：version: "3.9" services: gogs: image: gogs/gogs ports: - "50023:22" - "9444:3000" volumes: - /docker/gogs/data/gogs:/data depends_on: - mysql logging: driver: syslog restart: always mysql: image: mysql:8.0.29 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: gogs MYSQL_USER: gogs MYSQL_PASSWORD: 234567 command: - mysqld - --character-set-server=utf8 - --default-authentication-plugin=mysql_native_password volumes: - /docker/gogs/data/mysql:/var/lib/mysql - /docker/gogs/conf/mysql:/etc/mysql/conf.d logging: driver: syslog restart: always根据 docker-mysql 的介绍，通过 MYSQL_USER 、 MYSQL_PASSWORD 创建的用户，对通过 MYSQL_DATABASE 创建的数据库享有所有权限。3.运行并验证cd /docker/gogs docker-compose config docker-compose up记得在云服务器的设置里打开9444、50023端口。这时可以访问 云服务器ip:9444 ，出现gogs初始页面。这里谈一点gogs的初始设置：数据库选mysql，数据库主机填mysql:3306，用户密码就是gogs@234567。基本设置里的域名，笔者使用云服务器就填服务器ip，应用URL则不影响实际、只是展示用。SMPT设置和typecho的CommentNotifier插件差不多，见 Docker树莓派实践——Typecho及其备份 。如果是私人或小微企业，可以在 禁止用户自主注册 、 启用登录访问限制 里打勾。具体配置细节还是参考 gogs/gogs镜像原址 。另外，若要后台运行docker-frpc，可使用docker-compose up -d命令。4.gogs使用httpsgogs可以使用https，这里笔者使用的是自己域名的证书，也可以用自签证书。mkdir /docker/gogs/ssl_certificate cp /docker/gogs/data/gogs/gogs/conf/app.ini /docker/gogs/data/gogs/gogs/conf/app.ini_backup vim /docker/gogs/data/gogs/gogs/co…

Docker树莓派实践——Typecho及其备份
type: item
date: 2022-07-27T02:46:00+00:00
description: 步骤/目录： 1.方法一：独立镜像、network连接 （1）准备工作 （2）运行容器与测试 （3）收尾与总结 2.方法二：docker-compose （1）准备工作 （2）编写文件并运行项目 （3）收尾与总结 3.实战：编写易移植的typecho博客并使用https （1）准备工作 （2）编写nginx配置及compose模板 （3）运行项目并测试 （4）问题及其他 a.博客迁移 b.安装完成后无法登录 c.typecho镜像选择 d.typecho插件及其他 （5）后续 （6）为typecho添加其它功能 a.在文章页面添加最新文章 b.添加侧边栏目录索引 c.添加Sitemap （7）使用其它主题本文首发于个人博客https://lisper517.top/index.php/archives/22/，转载请注明出处。本文的目的是使用docker、docker-compose在树莓派上运行Typecho。本文实验日期为2022年7月26日。本文使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ）。之前的文章中曾介绍过Typecho，详见 树莓派搭建个人博客 。简单来说，Typecho是LNMP环境下运行的个人博客。学习Docker后，发现docker官网有typecho官方维护的镜像，于是试着用docker运行typecho。另外，这个镜像的下载量为100K+，但更新时间为3年前。官方镜像虽然只有50K下载，但最近更新比较勤（据说之前typecho五年没更新，docker镜像就更不会更新了），所以下面还是使用官方镜像。在typecho官方镜像页可以看到后缀不同的镜像，这些镜像的命名格式是：nightly-php版本号-后缀。php的版本主要有7.3、7.4、8.0，后缀主要有 空后缀、cli、fpm、apache、alpine 。本文选用的镜像是nightly-php8.0-apache。1.方法一：独立镜像、network连接主要思路是使用nightly-php8.0-apache镜像（apache和nginx作用一样，也是网页服务器），搭配docker-mysql。两个容器独立运行，使用docker network连接。需要注意typecho设置时如何填写数据库地址。在这种方式中，可以不用Dockerfile或docker-compose。（1）准备工作准备文件夹并拉取镜像：mkdir -p /test/mysql/data mkdir /test/mysql/conf docker network create -d bridge net_test docker pull mysql:8.0.29 docker pull joyqi/typecho:nightly-php8.0-apache拉取typecho镜像时比较慢，需要耐心等待。感觉白天镜像下的快一点。（2）运行容器与测试进行如下操作：docker run -itd --name mysql_test -v /test/mysql/data:/var/lib/mysql -v /test/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.29 docker run -d --name typecho_test -p 80:80 joyqi/typecho:nightly-php8.0-apache docker network connect net_test mysql_test docker network connect net_test typecho_test笔者实验时宿主机的80、3306端口没有被占用，有占用的话需自行更改。另外，typecho初始化时使用的数据库需要提前创建。进行如下操作：docker exec -it mysql_test bash mysql -uroot -p #这里连不上库可以参考 Docker树莓派实践——LNMP 中的附录 create database test; show databases; exit exit顺便也可以查看mysql容器是否运行正常。如果不想进入mysql容器，也可在mysql容器启动命令中指定MYSQL_DATABASE：docker run -itd --name mysql_test -v /test/mysql/data:/var/lib/mysql -v /test/mysql/conf:/etc/mysql/conf.d -p 3306:330…

Docker树莓派实践——frp（附dashboard开启https、frp双向验证）
type: item
date: 2022-07-27T02:44:00+00:00
description: 步骤/目录： 1.准备工作 2.编写frpc.ini和compose模板 3.运行并验证 附录： 1.让frps的dashboard使用https （1）tls介绍 （2）生成证书并运行 （3）访问的注意事项 2.frp双向验证 （1）介绍 （2）准备工作 （3）修改配置并运行本文首发于个人博客https://lisper517.top/index.php/archives/21/，转载请注明出处。本文的目的是使用docker、docker-compose在云服务器上运行frps、在树莓派上运行frpc。本文实验日期为2022年7月27日。本文使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ）。之前的文章中曾介绍过frp，详见 在树莓派上设置frp穿透 。简单来说，frp的运行需要一台有公网ip的机器和另一台机器（比如没有公网ip的内网机器）；frp的作用是把另一台机器的端口映射到公网机器，使得从公网机器也能访问到另一台机器的端口（即内网穿透）。在docker官方仓库网页可以搜索到很多frp镜像，这里frpc选用的是snowdreamtech/frpc镜像，其下载量为10M+，两个月前更新。frps镜像也是该作者的。1.准备工作首先准备云服务器。笔者这里使用的是阿里云，镜像为Docker 19.03。在云服务器上进行如下操作：docker pull snowdreamtech/frps mkdir -p /docker/frps/conf mkdir /docker/frps/ssl_certificate #存放tls相关证书 #安装docker-compose。使用env命令发现PATH里没有/usr/local/bin，就放在/usr/bin里了 curl -L https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose chmod +x /usr/bin/docker-compose docker-compose -v #编辑frps配置 vim /docker/frps/conf/frps.ini笔者使用的初始frps配置如下：[common] bind_port = 7000 #frpc上也要有相同的token值 token = 你的密码 #frps统计板 dashboard_port = 7500 dashboard_user = wuhuqifei dashboard_pwd = wuhuqifei #kcp据说是多消耗15%流量、降低tcp延迟。端口可和bind_port相同 kcp_bind_port = 7000使用初始配置时的运行命令：docker run -d --name frps -v /docker/frps/conf/frps.ini:/etc/frp/frps.ini --network host --restart=always snowdreamtech/frps为了让dashboard使用tls协议加密，笔者将frps.ini修改为：[common] bind_port = 7000 #frpc上也要有相同的token值 token = 你的密码 #frps统计板 dashboard_port = 7500 dashboard_user = wuhuqifei dashboard_pwd = wuhuqifei #kcp据说是多消耗15%流量、降低tcp延迟。端口可和bind_port相同 kcp_bind_port = 7000 #dashboard使用tls的相关配置 dashboard_tls_mode = true dashboard_tls_cert_file = /ssl_certificate/server.crt dashboard_tls_key_file = /ssl_certificate/server.key关于.crt、.key、ca.crt文件的介绍与自己生成的方法见 附录1. ，或者参考 gofrp文档 。然后更改命令，加上挂载证书存放目录的部分：docker run -d --name frps -v /docker/frps/conf/frps.ini:/etc/frp/frps.ini -v /docker/frps/ssl_certificate:/ssl_certificate --network host --restart=always…

Docker树莓派实践——LNMP
type: item
date: 2022-07-26T08:16:00+00:00
description: 步骤/目录： 1.下载、烧录Pi OS最新镜像 2.安装docker并调试；备份系统镜像 3.方法一：假docker法 （1）拉取并运行ubuntu镜像 （2）安装vim、nginx （3）安装php并配置nginx （4）安装mariadb （5）收尾及总结 4.方法二：胖容器法 （1）创建环境，运行容器 （2）测试容器 （3）收尾及总结 5.方法三：瘦容器法 （1）创建环境，配置nginx （2）创建网络，开启php、nginx容器并测试 （3）运行mysql容器并测试 （4）准备环境并编写compose模板，运行并测试 （5）收尾及总结 附录 1.docker连接mysql时显示"Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'" （1）docker run /bin/bash （2）Dockerfile CMD （3）docker run未挂载或映射端口 （4）mysql配置问题 2.使用docker-compose创建mysql容器时的初始化 （1）挂载配置文件和数据库 （2）进入服务容器修改 （3）挂载到/docker-entrypoint-initdb.d （4）Dockerfile COPY到/docker-entrypoint-initdb.d （5）--init-file选项本文首发于个人博客https://lisper517.top/index.php/archives/20/，转载请注明出处。本文的目的是使用docker、docker-compose在树莓派上搭建LNMP环境。本文实验日期为2022年7月25日。本文使用的是树莓派4B（内存8G版），系统为Pi OS 64位桌面版（2022年4月4日更新，镜像名 2022-04-04-raspios-bullseye-arm64.img ），装上系统后仅做了一些基础配置（安装了ufw、watchdog，设置了ssh密钥，apt update了一下）。LNMP环境指Linux、Nginx、Mysql、Php，LNMP常用于提供动态网页服务。一般来说使用docker有三种方式搭建LNMP环境：一是使用linux容器（如centos或ubuntu），docker run -it ubuntu bash，类似不使用docker时进行安装；二是使用Dockerfile，FROM ubuntu开始构建一个镜像，安装NMP；三是单独生成N、M、P的镜像，使用docker-compose或其他方法管理。方法一属于下策，但是最简单易行；方法二可称为fat container，只需要一个镜像、一个容器，缺点是不利于NMP的版本变更，但在一些情况下也可以使用；方法三为thin container，需要三个容器跑一个功能，容器多但是利于版本更迭、调整环境，而且使用docker-compose可以非常方便地管理多个容器。这里三种方法都演示一下。另外，如果需要非docker搭建LNMP，可以参考之前的文章 树莓派搭建个人博客 。1.下载、烧录Pi OS最新镜像这里涉及的操作之前的文章已经介绍过了，详见 树莓派4B初始化 。本次实验使用的是树莓派4B。在系统镜像下载网页下载最新的Pi OS 64位桌面版（下载文件名为2022-04-04-raspios-bullseye-arm64.img.xz，解压为.img文件后大小为3.95GB）。注意2022年4月后Pi OS取消了默认的pi用户，但可以自己创建：在boot下新建userconf文件，写入以下内容：pi:$6$8WzhrUbnvxbJdS5n$p5acHHXaB02qI1eCJrSH4lSUOsXx9WnTvbNm2T9h9d/OmnFuf0qXGTAYF3GK5pqFONn7LiA4Khn4AHXcYG72D/这样就手动创建了pi用户，密码还是raspberry。装上系统后仅进行了apt-get upgrade，安装并设置了ufw、watchdog，调整了ssh设置。2.安装docker并调试；备份系统镜像安装、调试docker和docker-compose的过程在前面已经介绍，这里不再赘述（见 Docker入门（一） ）。记得换docker源。这里使用RaspberryBackup脚本备份系统，详细介绍见 树莓派备份-RaspberryBackup详解 。3.方法一：假docker法再次提醒，这种方法只是学术探讨，实际环境中不管是生成还是测试都不要使用。（1）拉取并运行ubuntu镜像docker pull ubuntu docker run -itd -p 80:80 --name ubuntu_LNMP --…

Docker入门（二）
type: item
date: 2022-07-26T08:15:00+00:00
description: 本文较长，属于系统性总结，可作为使用手册查阅。本文主要介绍了docker-compose的使用。步骤/目录： 1.Docker Compose （1）安装compose与卸载 （2）compose的使用例一 （3）docker-compose命令 a.build b.config c.down d.exec e.images f.kill g.logs h.pause i.port j.ps k.pull l.push m.restart n.rm o.run p.scale q.start r.stop s.top t.unpause u.up v.help w.version （4）docker-compose.yml模板文件 a.build b.cap_add，cap_drop c.command d.configs e.cgroup_parent f.container_name g.deploy h.devices i.depends_on j.dns k.dns_search l.tmpfs m.env_file n.environment o.expose p.external_links q.extra_hosts r.healthcheck s.image t.label u.logging v.network_mode w.networks x.pid y.ports z.secrets a1.security_opt b1.stop_signal c1.sysctls d1.ulimits e1.volumes f1.其他指令 g1.读取变量值 （5）docker-compose实战 2.其他进阶内容 3.使用docker-compose更新容器 4.docker使用心得 （1）docker网络-单机 （2）docker与ufw （3）docker网络-多机本文首发于个人博客https://lisper517.top/index.php/archives/19/，转载请注明出处。本文的目的是对docker-compose相关内容做总结归纳，使用本文从零学习docker将有一定难度。本文主要总结自菜鸟教程和Docker——从入门到实践和一些其他零散资料，有不明白的地方请参考原文。本文写作日期为2022年2月-7月。本文涉及的主要是docker的进阶内容，初学者可以先只看Docker Compose，再使用一段时间docker后，有需要再学习其他的。1.Docker Compose更详细的说明见Docker Compose，这里只做一个快速手册式的总结。在以下compose的讲解中，服务（service）指一个镜像实例化的一个或多个容器（为了便于理解，笔者一般都称服务容器），项目（project）指为了完成某种功能而相互协作的多个容器构成的整体。Docker Compose是一种管理多个容器的工具，只需要配置docker-compose.yml（compose模板）文件就能打包多个容器为一个项目（project）。YAML格式（.yml文件）类似html、json格式，是一种组织内容表达的格式，规则类似json的键值对，形式上不同而已。最后，原来的compose是用python写的，后来的compose v2则是官方用Go重写的。（1）安装compose与卸载compose支持linux、mac、windows平台；可通过pip或二进制包下载两种方式安装。对于mac、windows平台，其docker桌面版自带compose；对于linux平台，x86_64架构的机器，可使用以下方式安装（该命令会自动选择合适的平台）：curl -L https://github.com/docker/compose/releases/download/v1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose #国内用户可替换为以下命令加快下载，笔者实验的时候这个网页好像已经失效了 curl -L https://download.fastgit.org/docker/compose/releases/download/v1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose #至此就算安装完成对于linux平台，arm架构的机器（如树莓派），可使用pip安装：pip install -U docker-compose另外还可以使用以下命令进行bash命令补全（…