CentOS系统下Docker安装部署Strapi

2023年 7月 19日 62.8k 0

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 项目,然后再 develop项目,否则上面的配置不会生效

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 脚本

官网参考:docs.strapi.io/dev-docs/in…

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

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论