Raspberry Pi 4 上的 Nginx 反向代理管理器在重启后不会自动启动
Nginx Reverse Proxy Manager on Raspberry Pi 4 doesn't automatically start up after reboot
我使用 docker 和 docker-compose 在我的 Raspberry Pi 上设置了 Jamie Curnow 的 Nginx 反向代理管理器。
这是 yml 堆栈文件:
---
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80' #HTTP Traffic
- '81:81' #Dashboard Port
- '443:443' #HTTPS Traffic
volumes:
- ./config.json:/app/config/production.json
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'jc21/mariadb-aria:10.4'
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
(我使用不同的密码)
现在,我曾经使用 sudo docker-compose up -d
编写过它,但是,每当我 sudo reboot
我的 Raspberry Pi 时,它都不会作为服务启动。
这是我的 Raspberry Pi 内核,顺便说一句:
Linux Pi-Server 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/L
这是我的 OS 版本:
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
有趣的是,每当我尝试再次使用 sudo docker-compose up -d
重组它时,我都会得到以下输出:
Starting nginx_db_1 ... done
Starting nginx_app_1 ... done
之后,Mr. Curnow 的 Nginx 和它的 GUI 都工作了。
有没有比运行这个docker-每次启动时都合成更奇特的方法?
主机 -- docker 服务级别
更新:初始答案在 docker 本身内起作用。如果您希望 docker 本身也能在启动时启动,那么那就是 different story。你应该能够做到这一点:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
VM -- docker 容器级别 (nginx)
绝对可以开机启动nginx服务
命令不言自明——启用、禁用,并检查状态 运行 nginx 启动:
sudo systemctl enable nginx
sudo systemctl disable nginx
sudo systemctl status nginx
资源:
如果您无法使用,请告诉我,我会尝试寻找其他方法并更新我的答案。
您还可以编辑 YML 文件,在“services:
”
中说“restart: always
”
例如像这样:
version: '3'
services:
postgresql:
image: postgres:9.6.6
ports:
- 9932:5432
expose:
- "5432"
environment:
- POSTGRES_PASSWORD=pass
restart: always
volumes:
- /data:/var/lib/postgresql/data
myapp:
image: myapp
links:
- postgresql
depends_on:
- "postgresql"
restart: always
ports:
- "5000:5000"
我还建议使用此服务目录将您的特定 docker-compose 添加为服务:
/etc/systemd/system/
在这里只需使用 nano 或 vim 创建文件。文件名并不重要,但是,它需要是一个“.service”文件,所以我推荐名称“docker-compose-app.service
”
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/wherever/your/docker-compose/file/is
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
(WorkingDirectory = 无论您的 docker-compose 文件在哪里,请更改!)
然后您需要做的就是:
systemctl enable docker-compose-app
(如果您为它指定了不同的文件名,请在此处使用该名称)
为了确定:
sudo systemctl enable docker
这是一个Whosebug question可能会帮助您解决问题
restart: always policy 的工作原理。
我使用 docker 和 docker-compose 在我的 Raspberry Pi 上设置了 Jamie Curnow 的 Nginx 反向代理管理器。
这是 yml 堆栈文件:
---
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80' #HTTP Traffic
- '81:81' #Dashboard Port
- '443:443' #HTTPS Traffic
volumes:
- ./config.json:/app/config/production.json
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'jc21/mariadb-aria:10.4'
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
(我使用不同的密码)
现在,我曾经使用 sudo docker-compose up -d
编写过它,但是,每当我 sudo reboot
我的 Raspberry Pi 时,它都不会作为服务启动。
这是我的 Raspberry Pi 内核,顺便说一句:
Linux Pi-Server 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/L
这是我的 OS 版本:
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
有趣的是,每当我尝试再次使用 sudo docker-compose up -d
重组它时,我都会得到以下输出:
Starting nginx_db_1 ... done
Starting nginx_app_1 ... done
之后,Mr. Curnow 的 Nginx 和它的 GUI 都工作了。
有没有比运行这个docker-每次启动时都合成更奇特的方法?
主机 -- docker 服务级别
更新:初始答案在 docker 本身内起作用。如果您希望 docker 本身也能在启动时启动,那么那就是 different story。你应该能够做到这一点:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
VM -- docker 容器级别 (nginx)
绝对可以开机启动nginx服务
命令不言自明——启用、禁用,并检查状态 运行 nginx 启动:
sudo systemctl enable nginx
sudo systemctl disable nginx
sudo systemctl status nginx
资源:
如果您无法使用,请告诉我,我会尝试寻找其他方法并更新我的答案。
您还可以编辑 YML 文件,在“services:
”
restart: always
”
例如像这样:
version: '3'
services:
postgresql:
image: postgres:9.6.6
ports:
- 9932:5432
expose:
- "5432"
environment:
- POSTGRES_PASSWORD=pass
restart: always
volumes:
- /data:/var/lib/postgresql/data
myapp:
image: myapp
links:
- postgresql
depends_on:
- "postgresql"
restart: always
ports:
- "5000:5000"
我还建议使用此服务目录将您的特定 docker-compose 添加为服务:
/etc/systemd/system/
在这里只需使用 nano 或 vim 创建文件。文件名并不重要,但是,它需要是一个“.service”文件,所以我推荐名称“docker-compose-app.service
”
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/wherever/your/docker-compose/file/is
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
(WorkingDirectory = 无论您的 docker-compose 文件在哪里,请更改!)
然后您需要做的就是:
systemctl enable docker-compose-app
(如果您为它指定了不同的文件名,请在此处使用该名称)
为了确定:
sudo systemctl enable docker
这是一个Whosebug question可能会帮助您解决问题
restart: always policy 的工作原理。