rr- / szurubooru

Image board engine, Danbooru-style.
GNU General Public License v3.0
704 stars 178 forks source link

Failed to parse platform when updating #443

Closed ninjazan420 closed 3 years ago

ninjazan420 commented 3 years ago

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 use docker build -t szurubooru/client:latest ., (seen here: issues/392) the following message appeared right after I hit enter:

user@host:~/szuru/client$ docker build -t szurubooru/client:latest .
Sending build context to Docker daemon  2.293MB
Step 1/24 : FROM --platform=$BUILDPLATFORM node:lts as builder
failed to parse platform : "" is an invalid component of "": platform specifier component must match "^[A-Za-z0-9_-]+$": invalid argument

My Dockerfile within the client folder is unchanged, compared to the one on github.

I would really appreciate your help :)

Thanks and love

sgsunder commented 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:

ninjazan420 commented 3 years ago

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!

ninjazan420 commented 3 years ago

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
neobooru commented 3 years ago

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.

ninjazan420 commented 3 years ago

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? :)

neobooru commented 3 years ago

Try the older version from here.

ninjazan420 commented 3 years ago

Okay, thanks.

The build process went through, but now I am not able to connect to the website anymore. :D

grafik

neobooru commented 3 years ago

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.

ninjazan420 commented 3 years ago

Interesting, because when I've followed the installation instructions and didn't push an update, the server just worked fine.

Here's the log:

server_1 | INFO [alembic.runtime.migration] Context impl PostgresqlImpl. server_1 | INFO [alembic.runtime.migration] Will assume transactional DDL. server_1 | Traceback (most recent call last): server_1 | File "/usr/bin/alembic", line 8, in server_1 | sys.exit(main()) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 588, in main server_1 | CommandLine(prog=prog).main(argv=argv) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 582, in main server_1 | self.run_cmd(cfg, options) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 559, in run_cmd server_1 | fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 320, in upgrade server_1 | script.run_env() server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 563, in run_env server_1 | util.load_python_file(self.dir, "env.py") server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/env.py", line 96, in server_1 | run_migrations_online() server_1 | File "/opt/app/szurubooru/migrations/env.py", line 90, in run_migrations_online server_1 | alembic.context.run_migrations() server_1 | File "", line 8, in run_migrations server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/environment.py", line 851, in run_migrations server_1 | self.get_context().run_migrations(**kw) server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/migration.py", line 600, in run_migrations server_1 | for step in self._migrations_fn(heads, self): server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 309, in upgrade server_1 | return script._upgrade_revs(revision, rev) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 439, in _upgrade_revs server_1 | for script in reversed(list(revs)) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 793, in iterate_revisions server_1 | revisions, heads = fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1393, in _collect_upgrade_revisions server_1 | targets: Collection["Revision"] = self._parse_upgrade_target( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1193, in _parse_upgrade_target server_1 | return self.get_revisions(target) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 527, in get_revisions server_1 | resolved_id, branch_label = self._resolve_revision_number( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 747, in _resolve_revision_number server_1 | self._revision_map server_1 | File "/usr/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 883, in __get__ server_1 | obj.__dict__[self.__name__] = result = self.fget(obj) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 189, in _revision_map server_1 | for revision in self._generator(): server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 136, in _load_revisions server_1 | script = Script._from_filename(self, vers, file_) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 999, in _from_filename server_1 | module = util.load_python_file(dir_, filename) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/versions/02ef5f73f4ab_add_hashes_to_post_file_names.py", line 11, in server_1 | from szurubooru.func import files, posts server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/posts.py", line 9, in server_1 | from szurubooru.func import ( server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/image_hash.py", line 9, in server_1 | import pyheif server_1 | File "/usr/lib/python3.8/site-packages/pyheif/__init__.py", line 3, in server_1 | import _libheif_cffi server_1 | ImportError: Error relocating /usr/lib/libheif.so.1: de265_get_image_full_range_flag: symbol not found server_1 | INFO [alembic.runtime.migration] Context impl PostgresqlImpl. server_1 | INFO [alembic.runtime.migration] Will assume transactional DDL. server_1 | Traceback (most recent call last): server_1 | File "/usr/bin/alembic", line 8, in server_1 | sys.exit(main()) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 588, in main server_1 | CommandLine(prog=prog).main(argv=argv) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 582, in main server_1 | self.run_cmd(cfg, options) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 559, in run_cmd server_1 | fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 320, in upgrade server_1 | script.run_env() server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 563, in run_env server_1 | util.load_python_file(self.dir, "env.py") server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/env.py", line 96, in server_1 | run_migrations_online() server_1 | File "/opt/app/szurubooru/migrations/env.py", line 90, in run_migrations_online server_1 | alembic.context.run_migrations() server_1 | File "", line 8, in run_migrations server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/environment.py", line 851, in run_migrations server_1 | self.get_context().run_migrations(**kw) server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/migration.py", line 600, in run_migrations server_1 | for step in self._migrations_fn(heads, self): server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 309, in upgrade server_1 | return script._upgrade_revs(revision, rev) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 439, in _upgrade_revs server_1 | for script in reversed(list(revs)) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 793, in iterate_revisions server_1 | revisions, heads = fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1393, in _collect_upgrade_revisions server_1 | targets: Collection["Revision"] = self._parse_upgrade_target( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1193, in _parse_upgrade_target server_1 | return self.get_revisions(target) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 527, in get_revisions server_1 | resolved_id, branch_label = self._resolve_revision_number( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 747, in _resolve_revision_number server_1 | self._revision_map server_1 | File "/usr/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 883, in __get__ server_1 | obj.__dict__[self.__name__] = result = self.fget(obj) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 189, in _revision_map server_1 | for revision in self._generator(): server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 136, in _load_revisions server_1 | script = Script._from_filename(self, vers, file_) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 999, in _from_filename server_1 | module = util.load_python_file(dir_, filename) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/versions/02ef5f73f4ab_add_hashes_to_post_file_names.py", line 11, in server_1 | from szurubooru.func import files, posts server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/posts.py", line 9, in server_1 | from szurubooru.func import ( server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/image_hash.py", line 9, in server_1 | import pyheif server_1 | File "/usr/lib/python3.8/site-packages/pyheif/__init__.py", line 3, in server_1 | import _libheif_cffi server_1 | ImportError: Error relocating /usr/lib/libheif.so.1: de265_get_image_full_range_flag: symbol not found server_1 | INFO [alembic.runtime.migration] Context impl PostgresqlImpl. server_1 | INFO [alembic.runtime.migration] Will assume transactional DDL. server_1 | Traceback (most recent call last): server_1 | File "/usr/bin/alembic", line 8, in server_1 | sys.exit(main()) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 588, in main server_1 | CommandLine(prog=prog).main(argv=argv) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 582, in main server_1 | self.run_cmd(cfg, options) server_1 | File "/usr/lib/python3.8/site-packages/alembic/config.py", line 559, in run_cmd server_1 | fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 320, in upgrade server_1 | script.run_env() server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 563, in run_env server_1 | util.load_python_file(self.dir, "env.py") server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/env.py", line 96, in server_1 | run_migrations_online() server_1 | File "/opt/app/szurubooru/migrations/env.py", line 90, in run_migrations_online server_1 | alembic.context.run_migrations() server_1 | File "", line 8, in run_migrations server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/environment.py", line 851, in run_migrations server_1 | self.get_context().run_migrations(**kw) server_1 | File "/usr/lib/python3.8/site-packages/alembic/runtime/migration.py", line 600, in run_migrations server_1 | for step in self._migrations_fn(heads, self): server_1 | File "/usr/lib/python3.8/site-packages/alembic/command.py", line 309, in upgrade server_1 | return script._upgrade_revs(revision, rev) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 439, in _upgrade_revs server_1 | for script in reversed(list(revs)) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 793, in iterate_revisions server_1 | revisions, heads = fn( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1393, in _collect_upgrade_revisions server_1 | targets: Collection["Revision"] = self._parse_upgrade_target( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 1193, in _parse_upgrade_target server_1 | return self.get_revisions(target) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 527, in get_revisions server_1 | resolved_id, branch_label = self._resolve_revision_number( server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 747, in _resolve_revision_number server_1 | self._revision_map server_1 | File "/usr/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 883, in __get__ server_1 | obj.__dict__[self.__name__] = result = self.fget(obj) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/revision.py", line 189, in _revision_map server_1 | for revision in self._generator(): server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 136, in _load_revisions server_1 | script = Script._from_filename(self, vers, file_) server_1 | File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 999, in _from_filename server_1 | module = util.load_python_file(dir_, filename) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file server_1 | module = load_module_py(module_id, path) server_1 | File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py server_1 | spec.loader.exec_module(module) # type: ignore server_1 | File "", line 848, in exec_module server_1 | File "", line 219, in _call_with_frames_removed server_1 | File "/opt/app/szurubooru/migrations/versions/02ef5f73f4ab_add_hashes_to_post_file_names.py", line 11, in server_1 | from szurubooru.func import files, posts server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/posts.py", line 9, in server_1 | from szurubooru.func import ( server_1 | File "/opt/app/szurubooru/migrations/../../szurubooru/func/image_hash.py", line 9, in server_1 | import pyheif server_1 | File "/usr/lib/python3.8/site-packages/pyheif/__init__.py", line 3, in server_1 | import _libheif_cffi server_1 | ImportError: Error relocating /usr/lib/libheif.so.1: de265_get_image_full_range_flag: symbol not found szuru_server_1 exited with code 1

SQL and client just works fine

I'm really thankful for your help!

neobooru commented 3 years ago

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).

ninjazan420 commented 3 years ago

Yeeeeeeeeeeeees!! :D

Thank you so much! Finally working. ❤️

e: finally i can go to bed, lol

ewof commented 1 year ago

yo sorry for necro this still happens on ubuntu-server with docker 20.10.25