Closed ninjazan420 closed 3 years ago
The problem is in the --platform=$BUILDPLATFORM
flag, as older Docker versions don't seem to automatically set the BUILDPLATFORM
variable.
Three solutions:
--build-arg BUILDPLATFORM=linux/amd64
(or whatever your build platform is) to your docker build
command--platform=$BUILDPLATFORM
string wherever it appears in server/Dockerfile
and client/Dockerfile
. This shouldn't affect anything (we only use it to speed up cross-compilation in our GitHub actions)Hi there,
summarized: none of these solutions worked for me, sadly.
user@host:~$ docker --version
Docker version 20.10.8, build 3967b7d
Adding the --build-arg BUILDPLATFORM=linux/amd64
flag results in the same message as in OP.
Removing the first line --platform=$BUILDPLATFORM
results in getting the following message: Error response from daemon: no build stage in current context
.
Researching this message tells me that I have to try it with FROM scratch
(see Stackoverflow for ref), which I did, but after sending the upgrade command, ends up here:
Step 4/23 : RUN npm install
---> Running in f05cecdd3492
OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown
Maybe I am missing packages? I just don't get why it works perfectly fine on Windows with WSL2 (Ubuntu, too) enabled, but on an actuall Ubuntu server, it doesn't.
Greetings and thanks for your help!
Okay, little update:
after a lot of research, I figured that changing FROM ubuntu:20.04
as first liner is required.
I faced another problem which came with line 4 (and 30):
RUN npm install -g npm@lts
RUN npm install
Does not work on Ubuntu, so you have to change it to:
COPY package.json package-lock.json ./
RUN apt-get update && apt-get install -y \
ca-certificates \
curl
ARG NODE_VERSION=14.16.0
ARG NODE_PACKAGE=node-v$NODE_VERSION-linux-x64
ARG NODE_HOME=/opt/$NODE_PACKAGE
ENV NODE_PATH $NODE_HOME/lib/node_modules
ENV PATH $NODE_HOME/bin:$PATH
RUN curl https://nodejs.org/dist/v$NODE_VERSION/$NODE_PACKAGE.tar.gz | tar -xzC /opt/
RUN npm install glob
# comes with npm
# RUN npm install -g typescript
After that, running the docker build
command, Ubuntu is throwing this on my face:
Step 22/31 : COPY --from=builder /opt/app/public/ .
invalid from flag value builder: pull access denied for builder, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Yeah that is because you removed the as builder
part from the first line.
Could you please try an older version of the Dockerfile? Please try this one, and if that doesn't work then please try removing the RUN npm install -g npm@lts
line.
E: All those changes you made seem fine, but you're just manually installing Node.js again, which is silly because there is a prebuilt image (which should work).
E2: I haven't tried the newest Dockerfile myself (on my Debian stable), so I can't really talk about that.
Big yeah! The old Dockerfile you've just linked works perfectly. Thank you!!
You are right. The node-thing was kinda stupid thought, but i had to do it that way, because I was facing the "/bin/sh": stat /bin/sh:
problem, which was fixed afterwards.
However, I was trying to do the same for ~/server/, just in case, and something similar happened here:
Step 7/29 : FROM --platform=$BUILDPLATFORM prereqs as testing
failed to parse platform : "" is an invalid component of "": platform specifier component must match "^[A-Za-z0-9_-]+$": invalid argument
Do you may have another fix for it? :)
Okay, thanks.
The build process went through, but now I am not able to connect to the website anymore. :D
That means that either the server component didn't start correctly, or that your nginx config does not forward /api
to the server port 6666.
Without the docker logs we can't know which it is.
Interesting, because when I've followed the installation instructions and didn't push an update, the server just worked fine.
Here's the log:
SQL and client just works fine
I'm really thankful for your help!
Ah my bad, I linked to the wrong version of the Dockerfile. Try this one please. The previous one I linked uses alpine edge packages, which stop working after a while (not really but that's the gist of it).
Yeeeeeeeeeeeees!! :D
Thank you so much! Finally working. ❤️
e: finally i can go to bed, lol
yo sorry for necro this still happens on ubuntu-server with docker 20.10.25
Hi,
I was already searching for a closed issue, but couldn't find one.
After a lot of testing on my local machine (which worked perfectly fine), I was moving to a hetzner cloud server (Ubuntu 20.04.3 LTS x86_64).
I was able to use
docker-compose up -d
, but when it came to changes and when I had to usedocker build -t szurubooru/client:latest .
, (seen here: issues/392) the following message appeared right after I hit enter:My Dockerfile within the client folder is unchanged, compared to the one on github.
I would really appreciate your help :)
Thanks and love