将strapi打包成docker镜像的步骤详解

 更新时间:2024年01月10日 08:49:40   作者:Micha  
在这个指南中,我们将学习如何将 Strapi 应用程序打包成 Docker 镜像,解决多环境部署问题,文末也会提供打包好的镜像地址,让同学们能够直接使用,需要的朋友可以参考下

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

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

例如:

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

步骤

1. 安装 Docker

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

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

2. 准备 Strapi 项目

strapi的官网:

strapi.io/

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

npx create-strapi-app@latest strapi-demo

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

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

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

npm install
npm run develop

3. 创建 Dockerfile

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

# 使用 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 镜像:

docker build -t my-strapi-app . --load

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

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

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

docker build -t 你的dockerhub名称/my-strapi-app:latest . --push

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

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

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 服务:

docker run -p 1337:1337 my-strapi-app

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

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

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

6.strapi镜像

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

在控制台输入:

docker pull webfamer/my-strapi-app:latest

就能在列表看到

然后运行下列命令:

docker run -p 1337:1337 my-strapi-app

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

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

以上就是将strapi打包成docker镜像的步骤详解的详细内容,更多关于strapi打包成docker镜像的资料请关注脚本之家其它相关文章!

相关文章

  • docker部署应用的三种方式

    docker部署应用的三种方式

    越来越多的前端团队选择用Docker部署前端项目,本文主要介绍了docker部署应用的三种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Docker中部署Redis集群与部署微服务项目的详细过程

    Docker中部署Redis集群与部署微服务项目的详细过程

    这篇文章主要介绍了Docker中部署Redis集群与部署微服务项目,主要包括使用docker部署的好处以及Docker与Kubernetes对比分析,需要的朋友可以参考下
    2022-06-06
  • 如何在Docker中设置Redis的密码

    如何在Docker中设置Redis的密码

    这篇文章主要介绍了在Docker中设置Redis的密码的相关知识,通过使用Docker,我们可以轻松地启动Redis容器并设置密码来保护我们的Redis实例,这提供了一个简单和可移植的方法来部署和管理Redis服务器,感兴趣的朋友一起看看吧
    2023-11-11
  • docker安装clickhouse过程详解

    docker安装clickhouse过程详解

    这篇文章主要为大家介绍了docker安装clickhouse过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 从零开始使用Dapr简化微服务的示例

    从零开始使用Dapr简化微服务的示例

    本文以net6和dapr1.5为基础,搭建一个dapr的简单使用示例。对Dapr简化微服务的简单使用感兴趣的朋友跟随小编一起学习下吧
    2021-11-11
  • docker安装部署 onlyoffice的详细过程

    docker安装部署 onlyoffice的详细过程

    本文给大家分享docker安装部署 onlyoffice的详细过程,通过图文并茂实例相结合给大家分享安装Docker Desktop及如何进入BIOS设置CPU的虚拟化,感兴趣的朋友一起看看吧
    2021-06-06
  • Docker数据卷与拦截以及目录拦截详解

    Docker数据卷与拦截以及目录拦截详解

    在Docker中可以使用数据卷目录挂载来将主机上的目录与容器内的目录进行映射,下面这篇文章主要给大家介绍了关于Docker数据卷与拦截以及目录拦截的相关资料,需要的朋友可以参考下
    2024-01-01
  • 查看docker项目配置文件的三种方法

    查看docker项目配置文件的三种方法

    这篇文章主要给大家介绍了关于查看docker项目配置文件的三种方法,从而帮助刚入行的开发者更好地理解和应用这一功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 使用Docker部署 spring-boot maven应用的方法

    使用Docker部署 spring-boot maven应用的方法

    本篇文章主要介绍了使用Docker部署 spring-boot maven应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Docker Runc容器生命周期详细介绍

    Docker Runc容器生命周期详细介绍

    这篇文章主要介绍了Docker Runc容器生命周期详细介绍的相关资料,文章分析runc的容器生命周期的抽象、内部实现以及状态转换图。理解了runc的容器状态转换再对比理解docker client提供的容器操作命令的语义会更容易些
    2016-12-12

最新评论