- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
个人博客 前端: https://lujiesheng.cn 个人博客 后端: https://api.lujiesheng.cn 个人博客 运维: https://portainer.lujiesheng.cn 。
我采用的是 腾讯云轻量应用服务器(2C 4G 8M 80G),配置如下图:
安装镜像选择 CentOS 7.6 64bit:
添加防火墙出入站规则,设置如下图:
把已备案的域名解析到服务器,记录如下图:
通过腾讯云申请免费证书:
把对应的证书下载到本地:
新建命名空间:
新建私有镜像仓库:
我采用的是 FinalShell:
更新服务器系统和内核版本:
# 执行更新命令:
yum -y update
# 等待更新完毕后,执行查看命令,确认系统和内核版本:
cat /etc/redhat-release
uname -r
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# 执行安装命令:
yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker
systemctl start docker.socket
systemctl start docker
# 查看 Docker 状态
systemctl status docker
# 设置 Docker 自启
systemctl enable docker
systemctl enable docker.socket
# 检查自启状态
systemctl list-unit-files | grep docker
# 查看当前docker版本
docker version
更新Docker远程仓库镜像源: https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors 。
# 创建deamon.json文件用来保存源
vim /etc/docker/daemon.json
# 添加稳定而且不经常变动的镜像源
{"registry-mirrors": ["https://i0q82fc7.mirror.aliyuncs.com"]}
# 保存并重启一下Docker
systemctl daemon-reload
systemctl restart docker
# 按照以下步骤来修改时区
cd /etc/
# 首先备份原有的 /etc/localtime 文件
mv /etc/localtime /etc/localtime.bak
# 然后创建一个新的链接文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 修改 /etc/timezone 文件,将其内容修改为所需的时区(例如 "Asia/Shanghai")
echo "Asia/Shanghai" | sudo tee /etc/timezone
# 查看是否设置成功
date
cat /etc/timezone
我们这里选择离线安装:
# 去官网下载
https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
# 切换服务器目录
cd /usr/local/bin
# 把下载的文件上传上去
# 改名
mv docker-compose-linux-x86_64 docker-compose
# 授权
chmod +x /usr/local/bin/docker-compose
# 测试是否安装成功
docker-compose version
cd /home
mkdir blog
cd blog
mkdir nginx
mkdir ui
cd nginx
mkdir ssl
# 在 /home/blog 目录下创建 docker-compose.yml 文件,编辑该文件,内容如下:
version: "3.8"
services:
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/ssl:/etc/nginx/certs
- ./ui/dist:/var/www/html
restart: always
networks:
- network
portainer:
image: portainer/portainer
container_name: portainer
ports:
- "xxxx:xxxx" # 把xxxx改成自己portainer的端口,需要跟服务器防火墙添加的规则对应!
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/run/docker.sock:/var/run/docker.sock
restart: always
networks:
- network
depends_on:
- nginx
redis:
image: redis
container_name: redis
ports:
- "xxxx:6379" # 把xxxx改成自己redis的端口,需要跟服务器防火墙添加的规则对应!
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- redis_data:/data
command: redis-server --requirepass xxx # 把xxx改成自己的redis连接密码
restart: always
networks:
- network
depends_on:
- portainer
mysql:
image: mysql
container_name: mysql
ports:
- "xxxx:3306" # 把xxxx改成自己mysql的端口,需要跟服务器防火墙添加的规则对应!
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=xxx # 把xxx改成自己的mysql连接密码
volumes:
- mysql_data:/var/lib/mysql
restart: always
networks:
- network
depends_on:
- redis
api:
image: ccr.ccs.tencentyun.com/lenceas/blog_api:v1.0
container_name: api
ports:
- "xxxx:xxxx" # 把xxxx改成自己api的端口
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
restart: always
networks:
- network
depends_on:
- mysql
networks:
network:
driver: bridge
volumes:
redis_data:
mysql_data:
# 切换到ui目录下,并把前端build打包的dist文件上传:
cd /home/blog/ui
# 切换到nginx/ssl 目录下,并把之前下载的ssl证书全部上传(只上传 crt 和 key 文件):
cd /home/blog/nginx/ssl
# 切换到 nginx 目录下,并创建 nginx.conf 文件,编辑该文件,内容如下:
cd /home/blog/nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
# lujiesheng.cn start
server {
listen 80;
listen [::]:80;
server_name lujiesheng.cn;
#把http的域名请求转成https
return 301 https://$host$request_uri;
#root /etc/www;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name lujiesheng.cn;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /etc/nginx/certs/lujiesheng.cn_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /etc/nginx/certs/lujiesheng.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root /var/www/html;
index index.html index.htm;
}
}
# lujiesheng.cn end
# api.lujiesheng.cn start
server {
listen 80;
listen [::]:80;
server_name api.lujiesheng.cn;
# 把http的域名请求转成https
return 301 https://$host$request_uri;
#root /etc/www;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name api.lujiesheng.cn;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /etc/nginx/certs/api.lujiesheng.cn_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /etc/nginx/certs/api.lujiesheng.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
proxy_pass http://ip:port/;
#root /etc/www;
#index index.html index.htm;
}
}
# api.lujiesheng.cn end
# portainer.lujiesheng.cn start
server {
listen 80;
listen [::]:80;
server_name portainer.lujiesheng.cn;
# 把http的域名请求转成https
return 301 https://$host$request_uri;
#root /etc/www;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name portainer.lujiesheng.cn;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /etc/nginx/certs/portainer.lujiesheng.cn_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /etc/nginx/certs/portainer.lujiesheng.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
proxy_pass http://ip:port/;
#root /etc/www;
#index index.html index.htm;
}
}
# portainer.lujiesheng.cn end
}
# 记得把截图部分改成自己的服务器IP和对应服务的端口:
# 切换到 blog 目录下(docker-compose.yml 同级目录):
cd /home/blog
# 切换到工程文件的解决方案根目录,把里层的 Dockerfile 文件复制过来:
# 先登录腾讯云容器服务
# 本地登录一下
# 登录
docker login ccr.ccs.tencentyun.com --username=100012562502
# 开始打包
docker build -t ccr.ccs.tencentyun.com/lenceas/blog_api:v1.0 .
# 推送到腾讯云容器
docker push ccr.ccs.tencentyun.com/lenceas/blog_api:v1.0
# 然后切换到服务器窗口登录并拉取镜像:
docker login ccr.ccs.tencentyun.com --username=100012562502
docker pull ccr.ccs.tencentyun.com/lenceas/blog_api:v1.0
# 启动 docker-compose (第一次启动需要拉取镜像,耐心等候几分钟即可...)
docker-compose up -d
# 查看是否运行成功命令
docker-compose images
docker-compose ps
docker network ls
# docker-compose 常用命令
# 启动容器:
docker-compose up
# 或者后台运行:
docker-compose up -d
# 停止容器:
docker-compose down
# 构建和启动容器:
docker-compose up --build
# 显示容器日志:
docker-compose logs
# 显示运行的服务列表:
docker-compose ps
# 查看当前 Docker 中所有网络列表
docker network ls
# 停止并移除容器,网络,卷和镜像(慎用):
docker-compose down --volumes --rmi all
# 查看 Docker Compose 配置文件(默认为 docker-compose.yml)的帮助信息:
docker-compose config
# 执行一个容器内的命令:
docker-compose exec <service_name> <command>
# 重新构建指定服务的容器:
docker-compose build <service_name>
# 停止并删除所有容器,但保留网络和卷等资源:
docker-compose down --volumes
个人博客 前端: https://lujiesheng.cn 。
个人博客 后端: https://api.lujiesheng.cn 。
个人博客 运维: https://portainer.lujiesheng.cn 。
至此,所有流程完毕,部署成功!!! 。
最后此篇关于【.NET6+Vue3+CentOS7.9+Docker+Docker-Compose+SSL】个人博客前后端运维部署的文章就讲到这里了,如果你想了解更多关于【.NET6+Vue3+CentOS7.9+Docker+Docker-Compose+SSL】个人博客前后端运维部署的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在使用以下dockerfile: FROM ubuntu:14.04 MAINTAINER xxx xxx # SSH RUN apt-get update && apt-get install
我运行了docker-compose build celery,(经过数小时的尝试,我的连接不良)成功了。 app Dockerfile的前80%是相同的,但不会重复使用缓存。从我可以浏览的内容来看,
我可以使用以下命令成功创建 Docker 注册表 v2 服务:docker service create 然后我使用 docker Push 将一些图像推送到该服务。 当我通过 curl localh
我正在尝试使用 gitlab 构建 CI,我从 docker 的 docker 镜像开始,我的前端存储库没有任何问题,但现在使用相同的 gitlab-ci 配置文件,我有此守护程序错误。 这是构建的输
用例: 我们在 Jenkins 中有几个“发布作业”build 和 push 应用程序的 Docker 镜像到 docker registry,更新各种文件中的项目版本,最后将发布标签推送到相应的 G
当我尝试构建我的 docker 文件时,docker 返回以下错误: [+] Building 0.0s (1/2)
docker-in-docker 的作者在此博客中建议不要将此图像用于 CI 目的: jpetazzo/Using Docker-in-Docker for your CI or testing en
我创建了一个 Dockerfile 来在 Docker 中运行 Docker: FROM ubuntu:16.04 RUN apt-get update && \ apt-get in
我尝试为 Docker 镜像定位一个特定标签。我怎样才能在命令行上做到这一点?我想避免下载所有图像,然后删除不需要的图像。 在 Ubuntu 官方版本中,https://registry.hub.do
我正在尝试在docker中运行docker。唯一的目的是实验性的,我绝不尝试实现任何功能,我只想检查docker从另一个docker运行时的性能。 我通过Mac上的boot2docker启动docke
docker-compose.yml version: "3" services: daggr: image: "docker.pvt.com/test/daggr:stable"
我有一个非常具体的开发环境用例。在一些代码中,我启动了一个容器来抓取页面并检索在容器中运行的服务(Gitlab)的 token 。 现在,我希望 Dockerize 运行它的代码。具体来说,类似: o
之前已经问过这个问题,但我不确定当时是否可以使用docker-compose文件完成docker堆栈部署。 由于最新版本支持使用compose将服务部署到堆栈,因此,我无法理解dab文件的值。 我检查
我在一次采访中被问到这个问题,但无法回答。也没有找到任何相关信息。 最佳答案 正如 Docker 文档中所述,Docker 注册表是: [...] a hosted service containin
有没有一种方法可以将具有给定扩展名的所有文件复制到Docker中的主机?就像是 docker cp container_name:path/to/file/in/docker/*.png path/o
我的日志驱动程序设置为journald。使用日志记录驱动程序时,daemon.json文件中的日志级别配置会影响日志吗?使用docker logs 时仅会影响容器日志? 例如,docker和journ
我最近开始使用Docker + Celery。我还共享了full sample codes for this example on github,以下是其中的一些代码段,以帮助解释我的观点。 就上下文
运行docker build .命令后,尝试提交构建的镜像,但收到以下错误 Step 12 : CMD activator run ---> Using cache ---> efc82ff1ca
我们有docker-compose.yml,其中包含Kafka,zookeeper和schema registry的配置 当我们启动docker compose时,出现以下错误 docker-comp
我是Docker的新手。是否可以在Docker Hub外部建立Docker基本镜像存储库?假设将它们存储在您的云中,而不是拥有DH帐户?谢谢。 最佳答案 您可以根据需要托管自己的注册表。可以在Depl
我是一名优秀的程序员,十分优秀!