Strapi v4 setup with Docker Compose and MySQL
I have to say it was confusing - today existing docker image strapi/strapi
has v3 under the hood and there is no simple way or docs to install Strapiv4 via Docker Compose.
Today the only way to create new project Strapi v4 is to use:
npx create-strapi-app@latest strapi-project --quickstart
and use it natively with node with
npm run develop
Today, I'm sharing my solution with Docker-compose.
Create Strapi project via Docker
Install Strapi project files:
- set node version. Here is version 16.
- set project name. I use
strapi-project
docker run -it \ -v $PWD:/data\ -w=/data\ node:16-alpine sh -c "yes | npx create-strapi-app@latest strapi-project --no-run --dbclient=mysql --dbhost=mariadb --dbport=3306 --dbname=strapi --dbusername=strapi --dbpassword=strapi"
All those CLI options are listed here on the Strapi Github repo - packages/cli/create-strapi-app/create-strapi-app.js With these options the configuration is setup correctly, together with the right database driver in package.json
:
... "dependencies": { ... "mysql": "2.18.1" } ...
Launch with Docker compose with Mysql together
Then lets launch the docker compose. Here as an option I use MariaDb as a choise.
For reference I used this folder structure:
Use following docker-compose.yml
version: '3' services: strapi: image: node:16-alpine command: npm run develop labels: com.example.description: "Strapi project" environment: DATABASE_CLIENT: mysql DATABASE_HOST: mariadb DATABASE_PORT: 3306 DATABASE_NAME: strapi DATABASE_USERNAME: strapi DATABASE_PASSWORD: strapi DATABASE_SSL: 'false' volumes: - ./strapi-project:/data working_dir: /data ports: - '1337:1337' depends_on: - mariadb mariadb: image: mariadb volumes: - ./mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: strapi MYSQL_DATABASE: strapi MYSQL_USER: strapi MYSQL_PASSWORD: strapi
Deploy with Docker compose to the production environment
For production deployment - please change the passwords above.
Also, it seems Strapi suggests using strapi start
instead as launch command.
Happy content creation!
Finally - I did set up Strapi v4 with Docker Compose and MySQL. It was fighting back - the official image does have an older image with Strapi v3.
— Sergej Brazdeikis (ex. Jevsejev) (@s_brazdeikis) December 22, 2021
My NAS Docker setup is looking more and more useful!
and TIL post is written :) https://t.co/u5b6W1DiPn