将strapi打包成docker镜像

Docker 是一个以容器虚拟化为基础的软件,他能够把项目,依赖,库以及一切你想要的东西,整合到一个容器里,以便在任何环境中运行。

Strapi 是一个开源的CMS框架,能够通过可视化配置的形式构建我们想要的数据存储结构,以及对应的增删改查的接口。但是实际使用过程中,老是会遇到安装问题,可能是依赖安不上,可能是文件名有空格等。

例如:

在这个指南中,我们将学习如何将 Strapi 应用程序打包成 Docker 镜像。解决多环境部署问题。文末也会提供打包好的镜像地址,让同学们能够直接使用。

步骤

1. 安装 Docker

首先,确保您的系统上已经安装了 Docker。您可以从 Docker 官方网站下载并按照说明进行安装:docs.docker.com/get-docker/

打包也需要用到这个软件,安装成功后就能看到

2. 准备 Strapi 项目

strapi的官网:

strapi.io/

使用下面的命令创建一个strapi的项目:

sql 复制代码
npx create-strapi-app@latest strapi-demo

有可能会提示你的node版本过低,他需要node版本大于18

项目创建完成会起一个1337端口的服务,就可以访问了

没有的话您可以进入项目根目录,使用以下命令启动 Strapi 服务:

arduino 复制代码
npm install
npm run develop

3. 创建 Dockerfile

在 Strapi 项目的根目录下创建一个名为 Dockerfile 的文件,内容如下:

bash 复制代码
# 使用 Node.js 官方镜像作为基础镜像
FROM node:18

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json 到工作目录
COPY package*.json ./

# 设置NPM镜像源
RUN npm config set registry https://registry.npmmirror.com

# 安装项目依赖
RUN npm install --cache /tmp/empty-cache;

# 复制项目文件到工作目录
COPY favicon.png ./favicon.png 
COPY src/ src/ 
COPY public/ public/ 
COPY database/ database/ 
COPY config/ config/ 
COPY .env .env 

# 打包strapi
RUN npm run  build

# 暴露 Strapi 端口(默认是 1337))
EXPOSE 1337

# 启动 Strapi 服务
CMD ["npm","run","develop"

4. 构建 Docker 镜像

注意:打包的时候一定要保证docker desktop这个软件的运行

在 Strapi 项目的根目录下,打开终端并执行以下命令构建 Docker 镜像:

css 复制代码
docker build -t my-strapi-app . --load

请注意,. 表示当前目录,my-strapi-app 是您为镜像指定的名称。

--load 表示加载到你本地的docker 上

如果你要推送到docker hub仓库里(类似于github ,只不过docker hub上都是镜像),用 --push

perl 复制代码
docker build -t 你的dockerhub名称/my-strapi-app:latest . --push

如果你打包用的机器架构和你要部署的机器架构不一样,你可以用--platform这个参数指定要打包的架构的镜像包(一样的话不用看)

当然在使用之前要先安装buildx

scss 复制代码
docker buildx install  //安装buildX
docker buildx create --name mybuilder  //创建了一个名为"mybuilder"的Buildx Builder
docker buildx use mybuilder //使用创建的Builder
//打包生成指定架构镜像
docker buildx build --platform linux/amd64,linux/arm64 -t my-strapi-app .

打包耗时会比较长

打包完成后,如果你是加载到本地docker的,你就能在docker 这个软件的Images里看到你打包好的镜像

不要直接点击镜像后面的运行按钮去跑,这样他不会把容器暴露的1337端口和你本地去映射,你访问不到!

5. 运行 Docker 容器

使用以下命令在 Docker 容器中运行 Strapi 服务:

arduino 复制代码
docker run -p 1337:1337 my-strapi-app

这会将容器的 1337 端口映射到主机的 1337 端口上。您可以根据需要调整端口映射。

现在,您的 Strapi 应用程序已经打包成 Docker 镜像,并在容器中运行。

这只是一个简单的指南,根据您的具体项目需求,您可能需要调整 Dockerfile 中的一些配置。确保您的 Strapi 项目已经配置了正确的数据库连接等信息,并且在 Docker 环境中也能正常运行。

6.strapi镜像

本文打包的strapi镜像可直接使用:

在控制台输入:

bash 复制代码
docker pull webfamer/my-strapi-app:latest

就能在列表看到

然后运行下列命令:

arduino 复制代码
docker run -p 1337:1337 my-strapi-app

访问localhost:1337,就能愉快的使用strapi了

不要直接点击镜像后面的运行按钮去跑,这样他不会把容器暴露的1337端口和你本地去映射,你访问不到!

相关推荐
二两锅巴10 小时前
📺 无需Electron!前端实现多显示器浏览器窗口精准控制与通信
前端
炸土豆10 小时前
防抖节流里的this传递
前端·javascript
用户40993225021210 小时前
Vue3中动态样式数组的后项覆盖规则如何与计算属性结合实现复杂状态样式管理?
前端·ai编程·trae
山璞10 小时前
Flutter3.32 中使用 webview4.13 与 vue3 项目的 h5 页面通信,以及如何调试
前端·flutter
努力早日退休10 小时前
Antd Image标签父元素会比图片本身高几个像素的原因
前端
林希_Rachel_傻希希10 小时前
手写Promise--教学版本
前端·javascript·面试
ETA810 小时前
`console.log([1,2,3].map(parseInt))` 深入理解 JavaScript 中的高阶函数与类型机制
前端·javascript
呼叫694510 小时前
图片列表滚动掉帧的原因分析与解决方案
前端
狗哥哥10 小时前
AI 驱动前端自动化测试:一套能落地、能协作、能持续的工程化方案
前端·测试
全栈老石10 小时前
别再折腾端口转发了:使用 Cloudflare Tunnel 优雅地分享你的 localhost
前端·后端·全栈