Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V4 images on DockerHub #321

Open
mooxl opened this issue Dec 1, 2021 · 25 comments
Open

V4 images on DockerHub #321

mooxl opened this issue Dec 1, 2021 · 25 comments

Comments

@mooxl
Copy link

mooxl commented Dec 1, 2021

Edit by: @derrickmehaffy

We have delayed docker image building until further notice due to higher priority tasks

Currently we are promoting/recommending the following community article: https://blog.dehlin.dev/docker-with-strapi-v4
Of if you are wanting to use docker with Heroku this one: https://blog.dehlin.dev/strapi-v4-with-docker-and-heroku
(Thank you @Eventyret)


When will the images be officially pushed to V4 on DockerHub?

@kwiat1990
Copy link

kwiat1990 commented Dec 2, 2021

I was a bit confused when I followed the Docker installation on documentation page for Strapi v4 and got v3.6.8 in the end. Docs should point out that it's not yet an v4 image, otherwise people waste their time 😉.

@badan-cloud
Copy link

Same issue here.

@magisters-cc
Copy link

Same here.

@degitgitagitya
Copy link

Waiting for this to migrate

@oghea
Copy link

oghea commented Dec 8, 2021

same issue here

@av1la
Copy link

av1la commented Dec 8, 2021

same here

@benjaminpreiss
Copy link

benjaminpreiss commented Dec 8, 2021

Same here

There is a workaround though to get it running relatively easy in the meanwhile.
Create a local copy of the Dockerfile and entrypoint script. Then adjust this line in the Dockerfile to reference a different package: RUN yarn global add @strapi/strapi@${STRAPI_VERSION}.

Here is the updated Dockerfile

@Slazerslaze
Copy link

Same here

@LeBenLeBen
Copy link

Please use the 👍 reaction on the initial message to share your interest. Posting the same message over and over creates noise by notifying everyone following this thread for no added value.

@badan-cloud
Copy link

Same here

There is a workaround though to get it running relatively easy in the meanwhile. Create a local copy of the Dockerfile and entrypoint script. Then adjust this line in the Dockerfile to reference a different package: RUN yarn global add @strapi/strapi@${STRAPI_VERSION}.

Here is the updated Dockerfile

Nope. In the background it tries to install the needed version from the yarn repository, but the latest version of strapi in yarn is:

yarn info strapi
...
    '3.6.8': '2021-08-24T09:01:20.840Z'

@kevinlaw91
Copy link

Nope. In the background it tries to install the needed version from the yarn repository, but the latest version of strapi in yarn is:

yarn info strapi
...
    '3.6.8': '2021-08-24T09:01:20.840Z'

They changed the npm package name from strapi to @strapi/strapi

@ziudeso
Copy link

ziudeso commented Dec 17, 2021

Here's my 2 cents

Docker-compose.yml

version: "3"

services:
  strapi:
    # image: strapi/strapi
    build: 
      context: .
      args:
        BASE_VERSION: latest
        STRAPI_VERSION: 4.0.0
    container_name: strapi
    restart: unless-stopped
    env_file: .env
    environment:
      DATABASE_PORT_PROD: ${DATABASE_PORT_PROD}
      DATABASE_USERNAME_PROD: ${DATABASE_USERNAME_PROD}
      DATABASE_PASSWORD_PROD: ${DATABASE_PASSWORD_PROD}
      DATABASE_HOST_PROD: ${DATABASE_HOST_PROD}
      DATABASE_NAME_PROD: ${DATABASE_NAME_PROD}
      NODE_ENV: ${NODE_ENV}
      HOST: ${HOST}
      PORT: ${PORT}
    volumes:
      - .:/srv/app
    ports:
      - "1337:1337"

Dockerfile

ARG BASE_VERSION
FROM strapi/base:${BASE_VERSION}

ARG STRAPI_VERSION
RUN yarn global add @strapi/strapi@${STRAPI_VERSION}

RUN mkdir /srv/app && chown 1000:1000 -R /srv/app

WORKDIR /srv/app

VOLUME /srv/app

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod 777 /usr/local/bin/docker-entrypoint.sh 
ENTRYPOINT ["docker-entrypoint.sh"]

CMD ["strapi", "develop"]

and finally the docker-entrypoint.sh is exactly the same as in this repo.

It works on my ubuntu 18.04 machine

@mklueh
Copy link

mklueh commented Dec 22, 2021

Wouldn't it be better to just have a Github Action in the main repo that creates and publishes a new Docker image for every version that gets released?

An extra repo looks like manual maintenance overhead at the cost of outdated Docker images

@marianhlavac
Copy link

Is anyone even maintaining this?

@nefarioustim
Copy link

Hey all.

I'm using Strapi hosted on AWS Fargate in production at a startup I CTO for, so the lack of maintenance of this repo has been somewhat frustrating since I want to upgrade to Strapi 4. Buoyed by @benjaminpreiss's comment above, I decided to fork the repo and have a go at generating my own base images:

https://github.com/grafaio/strapi-docker

This may be useful to others. My changes are:

  • I've limited the base box build to Node 16 only. If you want more, update the constants file.
  • I duplicated the change @benjaminpreiss recommended to ensure the Strapi 4 npm package is installed as latest.
  • I'm building on an M1 Mac and had some issues during build with sharp requiring a higher version of libvips, so I ensured both the Debian and Alpine builds install a higher version in the base box.
  • I'm using Yarn 3 locally, so I updated to include a .yarnrc that forces use of node_modules. I also updated the .gitignore to include new stuff generated by yarn.

At this point, I was able to build both the Debian and Alpine base boxes locally, and the subsequent Strapi derivatives using the somewhat old school build script as referenced at the bottom of the README:

yarn install
./bin/build.js

From here I've been able to docker run a new project using MySQL. One note: I had an issue here when I initially attempted to create my project using SQLite. There's an issue with the Node SQLite driver which you'll need to update once the docker run command has created your files but fails on building the project.

Hopefully my changes help someone else who finds this issue. If the maintainers want me to open a PR, just let me know.

@egahmad
Copy link

egahmad commented Dec 28, 2021

I have made an updated version here egahmad/strapi-docker:latest

https://hub.docker.com/repository/docker/egahmad/strapi-docker

It's working in my end, the update was by this fork https://github.com/egahmad/strapi-docker

@jenkin
Copy link

jenkin commented Jan 4, 2022

If you want to install the graphql plugin, you can encounter a compatibility error.

yarn run v1.22.5
$ strapi install graphql
Command failed with exit code 1: yarn add @strapi/[email protected]
error [email protected]: The engine "node" is incompatible with this module. Expected version "^12.22.0 || ^14.17.0 || >= 16.0.0". Got "14.16.0"
error Found incompatible module.

You must update the Dockerfile provided by @ziudeso (see comment) to use node 14.17.0 (and not 14.16.0) as base image.

ARG NODE_VERSION
FROM node:${NODE_VERSION} AS base
EXPOSE 1337

ARG BASE_VERSION
#FROM strapi/base:${BASE_VERSION}
FROM base

...

You can now add the NODE_VERSION in your docker compose file and build.

...
  build:
    context: .
    args:
      NODE_VERSION: 14.17.0
      BASE_VERSION: latest
      STRAPI_VERSION: 4.0.2
...

@jkupcho
Copy link

jkupcho commented Jan 8, 2022

For those who don't want to mess around with compose handling image building, and maybe having a locally tagged docker image for use. As others have noted, there is a single change needed to be made into the strapi Dockerfile, given the npm package is scoped.

strapi/Dockerfile

# ... stuff
ARG STRAPI_VERSION
# this needs to change to @strapi/strapi rather than just strapi
RUN yarn global add @strapi/strapi@${STRAPI_VERSION} 
# ... more stuff

Building / Tagging

$ cd base
$ docker build --build-arg NODE_VERSION=lts-bullseye . -t strapi/base:4.0.3
$ cd ../strapi
$ docker build --build-arg BASE_VERSION=4.0.3 --build-arg STRAPI_VERSION=4.0.3 . -t strapi/strapi:4.0.3

Running

Once built, the entrypoint allows the run command to pass parameters at the end, so just use strapi start and you'll get a new strapi instance going without the need of overriding a whole bunch of stuff.

$ docker run -p 1337:1337 strapi/strapi:4.0.3 strapi start

Obviously, this could still be used in a docker-compose.yml, but rather than using compose to build the image, you could just reference the tag just built.

@HannesOberreiter
Copy link

If anyone else is currently struggling with the Docker build of V4. There is currently a strapi third lib problem, which caused in my case a heap error each time when trying to create the docker build, even though I tried to increase the memory to the moon. 🌕

strapi/strapi#12160

Solution add to your package.json and rebuild the node_modules

"resolutions": {
    "**/colors": "1.4.0"
  }

Cheers
Hannes

@PaulCorbeau
Copy link

Is there any plan for that ? I would like to use this docker image with the version >4 of Strapi.
Thanks

@tpimh
Copy link

tpimh commented Jan 19, 2022

I have found f90mora/strapi-4.0.3 image to work perfectly well for me (just needed to update to 4.0.4). Hope the official release is coming soon!

@brunoprietog
Copy link

Hi,

Any news on this?

Thanks

@Vitorspk
Copy link

Hi,

Any news on this?

@naskio
Copy link

naskio commented Jan 28, 2022

Hi
Any updates ?
Thanks

@derrickmehaffy
Copy link
Member

See the update edit in the original post.

Going to lock this for now as we are well aware everyone wants docker images but at this time it's a low priority on our side as we never recommend using our images for production usage.

@strapi strapi locked and limited conversation to collaborators Feb 8, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests