Docker image for strapi version 4 (latest version)
API creation made simple, secure and fast. The most advanced open-source Content Management Framework to build powerful API with no effort.
Using Docker Compose, create docker-compose.yml file with the following content:
version: "3"
services:
strapi:
image: codebunny/strapi
environment:
NODE_ENV: development # or production
ports:
- "1337:1337"
# volumes:
# - ./app:/srv/app # mount an existing strapi projector using Docker:
docker run -d -p 1337:1337 codebunny/strapi --env NODE_ENV=developmentYou can find more example on GitHub.
This image allows you to create a new strapi project or run an existing strapi project.
- for
$NODE_ENV = development: The command that will run in your project isstrapi develop. - for
$NODE_ENV = production: The command that will run in your project isstrapi start.
The Content-Type Builder plugin is disabled WHEN
$NODE_ENV = production.
When running this image, strapi will check if there is a project in the /srv/app folder of the container. If there is
nothing then it will run
the strapi new
command in the container /srv/app folder.
This command creates a project with an SQLite database. Then starts it on port 1337.
Environment variables
When creating a new project with this image you can pass database configurations to
the strapi new
command.
DATABASE_CLIENTa database provider supported by Strapi: (sqlite, postgres, mysql ,mongo).DATABASE_HOSTdatabase host.DATABASE_PORTdatabase port.DATABASE_NAMEdatabase name.DATABASE_USERNAMEdatabase username.DATABASE_PASSWORDdatabase password.DATABASE_SSLboolean for SSL.EXTRA_ARGSpass extra args to thestrapi new.
To run an existing project, you can mount the project folder in the container at /srv/app.
To deploy an existing strapi project to production using Docker, it is recommended to build an image for your project based on node v18.
Example of Dockerfile:
FROM node:18
# alternatively you can use FROM strapi/base:latest
# Set up working directory
WORKDIR /app
# Copy package.json to root directory
COPY package.json .
# Copy yarn.lock to root directory
COPY yarn.lock .
# Install dependencies, but not generate a yarn.lock file and fail if an update is needed
RUN yarn install --frozen-lockfile
# Copy strapi project files
COPY favicon.ico ./favicon.ico
COPY src/ src/
COPY public/ public/
COPY database/ database/
COPY config/ config/
# ...
# Build admin panel
RUN yarn build
# Run on port 1337
EXPOSE 1337
# Start strapi server
CMD ["yarn", "start"]-
The official documentation of strapi is available on https://docs.strapi.io/.
-
The official strapi docker image is available on GitHub (not yet upgraded to v4).
