CentOS系统下Docker安装部署Strapi

news2024/11/26 4:26:38

Nodejs 16 安装

移除旧版本的 node

yum remove -y nodejs npm

使用以下命令将存储库添加到系统

curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -

配置存储库之后可以安装

yum install -y nodejs

查看版本

node -v

下载 yarn 包管理

curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn

Docker 安装

Docker的安装以及基础镜像的使用

Docker 部署mysql

1- 拉取镜像

docker pull mysql:8.0.28

2- 启动 mysql,将mysql中的数据挂载到本地

docker run --name mysql -v ./mysql/data:/var/lib/mysql -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.28

3- 进入容器

docker exec -it mysql bash

4- 登录mysql

mysql -u root -p
#输入前面启动 mysql 时的密码 1234

5- 添加远程登录用户

CREATE USER 'baiye'@'%' IDENTIFIED WITH mysql_native_password BY 'by1234';
GRANT ALL PRIVILEGES ON *.* TO 'baiye'@'%';

记住上面部署mysql是添加远程登录的用户名和密码,我的文档是

用户名:baiye

密码:by1234

创建数据库

# 创建数据库,名称为 strapi
create database strapi;

记住这个位置我们创建的数据库的名称,我的文档是

strapi

创建 strapi 项目

下载项目需要的依赖

yum update -y
npm install -g npm

1- 创建一个 strapi 项目

npx create-strapi-app@latest my-strapi

如果报下面的错误,按照提示 升级 npm 的版本

image-20230713195845898

npm install -g npm@9.8.0

2- 选择项如下图,选择数据库的配置后会需要去自动去检测一下数据的状态(一定要保证正确的数据库配置信息),下载资源会花费较长的时间

image-20230713200405190

这里的 username 不能写 root ,一定要写成上面远程登录的用户名,我的文档上面是 baiye

如果报错是我们数据库的错误,可以到 .env 文件中进行修改

备注: 下载资源时候,可能会下载失败,可以换网络多次尝试

3- 项目创建成功后如下图

image-20230713204122439

4- 运行项目

npm run develop

image-20230713205654558

此时在本地访问 http://192.168.157.142:1337/admin 不能够访问,出现空白页,需要我们关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

再一次运行项目,访问地址,如下点击 create

image-20230713210342837

此时浏览器一直在加载中,打开控制台,出现下面的错误。

错误:main.3d752c03.js:2927 Refused to connect to ‘http://localhost:1337/admin/project-type’ because it violates the following Content Security Policy directive: “connect-src ‘self’ https:”.

image-20230713210501819

发现这里一直在向我们 localhost 发送请求,而并不是我们服务器的地址。下面需要我们进行配置。

5- 配置项目

vim config/server.js
# 添加下面的配置
url: env('PUBLIC_URL','http://192.168.157.143:1337'),

image-20230713210949260

配置后,需要先 build 项目,否则上面的配置不会生效

6- 配置语言

vim ./src/admin/app.js
# 文件中写入下面的内容
const config = {
  locales: [
    'zh-Hans',
    'zh',
  ],
};

const bootstrap = (app) => {
  console.log(app);
};

export default {
  config,
  bootstrap,
};

重新编译运行

npm run build
npm run develop

image-20230713211620261

大功告成!!!

image-20230713211725281

image-20230713212042616

制作 docker 镜像

Dockerfile 脚本

将 dockerfile 和 .dockerignore 放在与项目 src 同级目录下

1- 编写 Dockerfile 脚本

官网参考:https://docs.strapi.io/dev-docs/installation/docker#development-dockerfile

FROM node:18-alpine
RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev
ARG NODE_ENV=development
ENV NODE_ENV=${NODE_ENV}

WORKDIR /opt/app
COPY package*.json ./
RUN npm update -g
RUN npm install
ENV PATH /opt/app/node_modules/.bin:$PATH

COPY . .
RUN ["npm", "run", "build"]
EXPOSE 1337
CMD ["npm", "run", "develop"]

2- 编写 .dockerignore 文件

vim .dockerignore

# 写入下面的内容
.tmp/
.cache/
.git/
build/
node_modules/
data

3- build

docker build -t or/strapi .

image-20230714213921643

运行

docker run -it -d --name strapi --restart always -p 1337:1337 or/strapi

docker-compose

1- 准备需要绑定挂在的文件

image-20230715081221048

2- 准备需要挂载的 mysql 的数据

3- 编写 docker-compose 脚本

version: "3"
services:
    strapi:
        container_name: or-strapi
        image: or/strapi
        environment:
            PUBLIC_URL: 192.168.157.143
            DATABASE_CLIENT: mysql
            DATABASE_HOST: 192.168.157.143
            DATABASE_PORT: 3306
            DATABASE_NAME: strapi
            DATABASE_USERNAME: baiye
            DATABASE_PASSWORD: by1234
        ports:
            - "1337:1337"
        networks:
            - strapi
        depends_on:
            - mysql

    mysql:
        container_name: or-mysql
        image: mysql:8.0.28
        environment:
            MYSQL_ROOT_PASSWORD: 1234
            MYSQL_USER: baiye
            MYSQL_PASSWORD: by1234
            MYSQL_DATABASE: strapi
        volumes:
            - ./mysql/data:/var/lib/mysql
        ports:
            - "3306:3306"
        networks:
            - strapi

volumes:
    strapi-data:

networks:
    strapi:
        driver: bridge

所有的准备文件如下

image-20230715083027217

运行,运行前需要删除我们 dockerfile 脚本中运行的镜像,然后执行下面的命令

docker-compose up -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/770326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字化时代,智能文件工具让办公升级

无论是在办公室还是在学校,文件管理是我们日常工作中不可或缺的一环。传统的文件整理方式可能需要花费大量的时间和精力,而且常常容易出现混乱和遗漏。然而,随着科技的不断进步,我们现在有幸生活在一个数字化时代,因此…

ELK(elasticsearch+logstash+kibana+beats)

什么是ELK Elasticsearch:Elasticsearch(以下简称ES) 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 ES是 Elastic Stack 的核心,采用集中式数据存储,可以通过机器学习来…

ylb-接口2首页产品数据和接口3产品列表

总览: 1、service处理(分页查询) 在api模块下service包,创建一个产品接口ProductService:(目前方法为分页查询queryByTypeLimit(Integer pType,Integer pageNo,Integer pageSize)) package…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎,只要输入“中小企业数字化转型”,关于痛点、难处的文章就会铺面而来,难在哪里,其实很好解答,关键在于,如何解决这一个个难处。 PS:给大家整理了一份完整版的《中小企业如…

物理层 ———— 奈氏准则 香农定理

1. 失真的现象----码间串扰 2.奈氏准则 eg: 3.香农定理 eg: 3.两个准则的比较

excel表格设置下拉选项

excel表格设置下拉选项 最后保存,即可设置完成。

RAM Failed to establish a new connection: [Errno 11001] getaddrinfo failed

在跑RAM(​Recognize Anything Model​)的时候报了一个错: Failed to establish a new connection: [Errno 11001] getaddrinfo failed ① 没有帮助我解决,对大家可能有用: 查到别人的解决方案是: 开放C:\Windows\System32\drivers\etc\hos…

和chatgpt学架构02-环境搭建

目录 1 安装vs code2 vs code功能介绍3 安装nodejs4 安装vue5 在vs code打开工程总结 我们在上一篇 技术选型 里咨询了chatgpt前后端的框架选择和数据库的选择。有了框架之后就需要选择合适的开发工具了,继续咨询一下chatgpt 我现在选型,前端使用vue&am…

Kubernetes集群故障排查—审计

Kubernetes 审计(Auditing) 功能提供了与安全相关的、按时间顺序排列的记录集, 记录每个用户、使用 Kubernetes API 的应用以及控制面自身引发的活动。 审计功能使得集群管理员能够回答以下问题: 发生了什么?什么时候…

跨文化合作:如何解决海外网红营销中的文化差异?

随着社交媒体的快速发展,海外网红营销已成为许多品牌和企业获取国际市场的有效方式。然而,由于不同国家和地区存在着独特的文化差异,如语言、价值观、习俗等,这也给品牌进行海外网红营销带来了一系列挑战。本文Nox聚星将和大家探讨…

linux主机上面使用kubectl连接 Kubernetes 集群

**kubectl连接Kubernetes集群,应用场景在一台linux主机上面可以使用kubectl命令查看k8s集群信息。 1、首先需要在linux或者debain上安装kubectl命令。 官网安装地址:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/#install-kubec…

什么是70v转12v芯片?

问:什么是70v转12v芯片? 答:70v转12v芯片是一种电子器件,其功能是将输入电压范围在9v至100v之间的电源转换为稳定的12v输出电压。这种芯片通常被用于充电器、车载电池充电器和电源适配器等设备中。 问:这种芯片的最大…

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

Flink-端到端精确一次(End-To-End Exactly-Once)

1.总结 目的:想要在故障恢复后不丢数据 输入端 保证可以重复发送数据如果是kafka,Flink负责维护offset,不用kafka维护设置kafka的隔离级别为:读已提交flink 开启检查点采用对齐或者不对齐的精确一次输出端 kafka 幂等事务两阶段…

让你不再疑惑加水印用什么软件

每个人都有自己的独特创意和作品,而在现今互联网时代,分享和传播作品已成为一种普遍现象。然而,随着互联网的发展,越来越多的作品被人恶意盗用和复制,使得原创作者的权益受到了侵害。为了保护自己的作品,加…

每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户

文章目录 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户 大家好,我是Maynor。…

Vue中的事件处理

一,基本使用 1.使用v-on:事件名或者事件名绑定事件 常见的事件有: onclick, 鼠标单击事件; ondblclick, 鼠标双击事件;onmousedown,鼠标按下去的事件;onmouseup,鼠标弹起事件; onmouseover,onmouseente…

mybatis-plus逻辑删除与唯一约束冲突问题

问题描述: 在使用mybatis-plus进行数据库的增删查改的时候,我们一般都会设置用户名为唯一索引(为什么?因为用户名肯定不能重复) 当第一次新增用户时,会在数据库插入一条用户数据:能插入成功代…

计算机科学与技术专业课程内容汇总

大学课程结束了,真的好快。昨天把专业课程涉及到的内容汇总了下,还是挺多的,存到网盘里也不会丢,电脑存储空间还能扩大。 把网盘链接放在这里,希望大家共勉。图片中所涉内容仅为部分课程。 链接:https://…

Jmeter测试 Websocket服务器

目录 一、Jmeter 安装1.1 自定义 JMeter 的 JVM 设置 二、WebSocket插件安装三、环境准备3.1 连接数限制修改 四、测试4.1 脚本构建4.1.1 连接请求4.1.2 心跳4.1.3 WebSocket request-response Sampler4.1.4 WebSocket Single Write Sampler4.1.5 WebSocket Single Read Sample…