Forum OpenACS Q&A: Docker ERROR: manifest for oupfiz5/openacs-s6:latest not found

Administrator
- 7 minutes ago

using https://openacs.org/xowiki/setup-with-docker-s6
on a newly installed ubuntu 20.04 on Linode,com see the following

sudo OACS_LISTEN_PORT=8072 docker-compose up
Creating network "openacs-s6_default" with the default driver
Creating volume "openacs-s6_content" with default driver
Pulling postgres (postgres:14.1-alpine)...
14.1-alpine: Pulling from library/postgres
59bf1c3509f3: Pull complete
c50e01d57241: Pull complete
a0646b0f1ead: Pull complete
7433e5151e0c: Pull complete
8854018388d9: Pull complete
8de463f7fd19: Pull complete
b39ee18abab9: Pull complete
11d7473a0ff9: Pull complete
Digest: sha256:578ca5c8452c08a4e0f5e65b55dce5e1812fe63c8fee40ea837641031598e51e
Status: Downloaded newer image for postgres:14.1-alpine
Pulling openacs (oupfiz5/openacs-s6:latest)...
ERROR: manifest for oupfiz5/openacs-s6:latest not found: manifest unknown: manifest unknow

kmw@fremont:~/openacs-s6$ sudo OACS_LISTEN_PORT=8072 docker-compose up
Pulling openacs (oupfiz5/openacs-s6:latest)...
ERROR: manifest for oupfiz5/openacs-s6:latest not found: manifest unknown: manifest unknown

  • Docker image tag latest was deleted (wiki page is obsolete).
  • You can find more information about using openacs-s6 here.
  • Here is up-to-date docker\images\tags\changes info.
We used the github and it worked like a charm. We are testing it now
I did notice that the site-administration link goes to localhost and we are using :8080.
thank you very much.
On a different hosting I was able to install oacs.5.10 a second time.
May want to note cd src to find the docker-compose.yaml
The site-wide administration link worked and did not point to localhost:8080
I added a user
I selected dotlrn from the online repository to install
I watched it install a lot of the packages but when I came back it had the following:
invalid command name "::dotlrn::dotlrn_user_cache"
while executing
"::dotlrn::dotlrn_user_cache eval -partition_key $user_id $user_id-portal_id {
dotlrn::get_portal_id_not_cached -user_id $user_id
..."
(procedure "::nsf::procs::dotlrn::get_portal_id" line 2)
invoked from within
"dotlrn::get_portal_id -user_id $user_id"
("uplevel" body line 31)
invoked from within
"uplevel {
ad_include_contract {
.LRN Toolbar
}

set show_p [dotlrn_toolbar::show_p]

if { $show_p } {
set user_id [ad_conn user_id]
se..."
(procedure "code::tcl::/var/www/openacs/packages/dotlrn/lib/toolbar" line 2)
invoked from within
"code::tcl::$__adp_stub"
("uplevel" body line 12)
invoked from within
"uplevel {

if { [file exists $__adp_stub.tcl] } {

# ensure that data source preparation procedure exists and is up-to-date
..."
(procedure "adp_prepare" line 2)
invoked from within
"adp_prepare"
invoked from within
"template::adp_parse [template::util::url_to_file $src] $varlist"
(procedure "::nsf::procs::template::adp_include" line 6)
invoked from within
"template::adp_include $src $params"
(procedure "template::get_header_html" line 11)
invoked from within
"template::get_header_html"
("uplevel" body line 239)
invoked from within
"uplevel {
ad_page_contract {
This is the top-level master template. It allows the basic parts of an HTML
document to be set through convenie..."
(procedure "code::tcl::/var/www/openacs/www/blank-master" line 2)
invoked from within
"code::tcl::$__adp_stub"
("uplevel" body line 12)
invoked from within
"uplevel {

if { [file exists $__adp_stub.tcl] } {

# ensure that data source preparation procedure exists and is up-to-date
..."
(procedure "adp_prepare" line 2)
invoked from within
"adp_prepare"
invoked from within
"template::adp_parse $__adp_master [concat [list __adp_slave $__adp_output] [array get __adp_properties]]"
invoked from within
"template::adp_parse $__adp_master [concat [list __adp_slave $__adp_output] [array get __adp_properties]]"
invoked from within
"template::adp_parse $themed_template {}"
(procedure "adp_parse_ad_conn_file" line 20)
invoked from within
"$handler"
("::try" body line 3)
invoked from within
"rp_serve_concrete_file [ad_conn file]"
(procedure "::nsf::procs::rp_serve_abstract_file" line 60)
invoked from within
"rp_serve_abstract_file "$root/$extra_url""
("::try" body line 2)
invoked from within
"ad_try {
rp_serve_abstract_file "$root/$extra_url"
set ::tcl_url2file([ad_conn url]) [ad_conn file]
set ::tcl_url2..."
(procedure "rp_handle_request" line 49)
invoked from within
"rp_handle_request"
("::try" body line 2)
Dear Kenneth, this does not seem to be an issue specific to the docker image. I could reproduce it on a "classical" installation. It seems to happen only when one installs from repository, a local installation works fine.

The root cause seem to be that the dotlrn caches defined in dotlrn/tcl/dotlrn-init.tcl are not yet created by the time the system tries to use them. I am not sure of why this happens only installing via repo.

Ciao
Antonio

Docker image tag latest was deleted (wiki page is obsolete).

Please update the outdated information on the wiki page, every registered user has write permissions.

Dear Antonio,
Thank you so much for verifying my dotlrn install.
I've always used the repo install. I figure this means I need to use cvs checkout .
https://openacs.org/doc/openacs-5-1/cvs-guidelines.html
The repos install is based on the CVS install, but there are many options

- a released version (same as the release tar) (e.g. openacs-5-10-0-final)
- the latest released version of a branch (e.g. openacs-5-10-compat)
- the latest version of a branch (e.g. oacs-5-10)

You can see this version also here: https://openacs.org/repository/

The install-from-repository is based on .apm file and offers you many of these options, but not all. The .apm files are produced evey day and uses the released versions (tagged with -compat) and never offers the latest version of a branch ("catch of the day"), but rather released versions (the release manager has to tag versions accordingly after testing).

When one installs everything from cvs, most people checkout the latest version from a branch. If one does an installation from repository based on this, there might be differences. I had a quick lock into the s5 description of the docker configuration of vlad, it uses "oacs-5-10"), So, it is worth a try to install a version tagged with "oacs-5-10-compat" instead.

Gustaf
That makes sense but now I'm struggling to figure out how to install cvs inside the openacs container. I also noticed that on the repos linked from your post the latest is the openacs-5-9- compat Does that mean it is in the cvs but not listed yet?
Thank you so much for your help.
The configuration of the s5 installations allows specifying the CVS tag, so you do not have to install CVS manually.

Anyhow, i looked a little into the problem. This issue is not that the init-scripts are not executed during the "install from the repository", but that the result of these are not available in the last step of the installation script ... which prompts one to restart the server after the installation. Everything is installed correctly, the error could be ignored, after a restart everything is fine.

It is certainly not acceptable to tell a user "ignore this error", so I added a fix to the dotlrn package, where the problem happens, and i have tagged the changes such these are available via "install from repository". So, make sure to upgrade acs-tcl to version "5.10.1d14", then a subsequent installation from repository of dotlrn should lead to version 2.10.1d2, which should install without the error indicated earlier.

Thank you ,

When I initially installed the .lrn and got the error I did reboot the instance several times. Since .lrn changes the links the links did not work but like in the old days with Greenspun I could type in the URL and get access to some few things.

I selected (only) dotlrn to install.
See packages (below) which include the versions of acs-tcl and dotlrn as per your post.
(paste)
Main Site: ACS Site-Wide Administration: Install Software: Install From OpenACS Repository: Confirm

The packages you want to install require some other packages. These have been added to the list, and are marked below.

This is the list of packages we are going to install.

Please click the link below to begin installation.
Package Version Added
dotLRN 2.10.1d2
New Portal 2.10.0 *
Profile Provider 2.10.0 *
User Profile 2.10.0 *
ACS Tcl Library 5.10.1d14 *
dotLRN Bulk Mail Applet 2.10.0 *
dotLRN Calendar Applet 2.10.0 *
dotLRN Applet 2.10.0 *
dotLRN FAQ Applet 2.10.0 *
dotLRN Forums Applet 2.10.0 *
dotLRN File Storage Applet 2.10.0 *
dotLRN Homework 2.10.0 *
dotLRN News Applet 2.10.0 *
dotLRN Portlet 2.10.0 *
dotLRN Static Applet 2.10.0 *
dotLRN Assessment Applet 2.10.0 *
dotLRN Evaluation Applet 2.10.0 *
Zen Theme 2.10.0 *
Forums Portlet 2.10.0 *
News Portlet 2.10.0 *
Static Portlet 2.10.0 *
FAQ Portlet 2.10.0 *
Calendar Portlet 2.10.0 *
Evaluation 2.10.0 *
Evaluation Portlet 2.10.0 *
Views 2.10.0 *
Assessment 2.10.0 *
Assessment Portlet 2.10.0 *
File Storage Portlet 2.10.0 *
Bulk Mail 2.10.0 *
Bulk Mail Portlet 2.10.0 *

the install is chugging along

Installation Complete

Done installing packages.

» Click here to restart your server now.

I rebooted it 3 times and tailed the logs to see it load.
No matter where I went of did I get
Home

Begin Main Navigation
Begin Main Content
Client Error
The requested file was not found

I really hate to be a bother. I now am having problems start over with the quick install
root@la:/home/kmw# git clone https://github.com/oupfiz5/openacs-s6.git
Cloning into 'openacs-s6'...
remote: Enumerating objects: 775, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 775 (delta 0), reused 0 (delta 0), pack-reused 773
Receiving objects: 100% (775/775), 324.67 KiB | 1.60 MiB/s, done.
Resolving deltas: 100% (330/330), done.
root@la:/home/kmw# cd openacs-s6/
root@la:/home/kmw/openacs-s6# ls
Readme.md org src tests
root@la:/home/kmw/openacs-s6# nano Readme.md
root@la:/home/kmw/openacs-s6# ls
Readme.md org src tests
root@la:/home/kmw/openacs-s6# cd src
root@la:/home/kmw/openacs-s6/src# ls
Dockerfile VERSIONS docker-compose.yaml hook rootfs
root@la:/home/kmw/openacs-s6/src# docker-compose up -d
WARNING: The OACS_REPOSITORY variable is not set. Defaulting to a blank string.
WARNING: The OACS_IMAGE_NAME variable is not set. Defaulting to a blank string.
WARNING: The OACS_IMAGE_TAG variable is not set. Defaulting to a blank string.
WARNING: The OACS_LISTEN_PORT variable is not set. Defaulting to a blank string.
WARNING: The oacs_httpport variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_REPOSITORY variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_TAG variable is not set. Defaulting to a blank string.
WARNING: The PGUSER variable is not set. Defaulting to a blank string.
ERROR: The Compose file './docker-compose.yaml' is invalid because:
services.openacs.ports contains an invalid type, it should be a number, or an object
This message is some progress and new.
The requested file was not found

I could also reproduce this.

I can also verify that this is only happen on installations from repository.

  • One solution would be to include dotlrn and everything needed in the set of base-files in the docker container, which is no perfect solution, since one never knows how much to include there, updating is more complex, or
  • to identify the problem with the installation from repository properly.

I went a few steps into the latter direction. The problem is that after the installation from repository, the dotlrn package is not properly instantiated and mounted (which was the case for long ago), and since the dotlrn-init file creates the caches only when [dotlrn::is_instantiated] is true, this explain as well to the first problem reported above

invalid command name "::dotlrn::dotlrn_user_cache"

Two question arise: (1) can the problem be fixed by mounting the packages manually, and (2) why is dotlrn not properly mounted,

As a short time measure, do the following
a) navigate in your instance to /acs-admin/install/ and install the developer support and restart
b) when the server comes up, navigate to /ds/shell and type in the window the command

site_node::instantiate_and_mount -package_key dotlrn

After a restart, you should get the usual dialog for creating a professor on /dotlrn

WARNING: The OACS_REPOSITORY variable is not set. Defaulting to a blank string.
WARNING: The OACS_IMAGE_NAME variable is not set. Defaulting to a blank string.
WARNING: The OACS_IMAGE_TAG variable is not set. Defaulting to a blank string.
WARNING: The OACS_LISTEN_PORT variable is not set. Defaulting to a blank string.
WARNING: The oacs_httpport variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_REPOSITORY variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_TAG variable is not set. Defaulting to a blank string.
WARNING: The PGUSER variable is not set. Defaulting to a blank string.
ERROR: The Compose file './docker-compose.yaml' is invalid because:
...

Sorry guys - I forgotten to commit file .env. It contains the necessary variables for docker-compose. Now I've committed it. Run of docker-compose is ok.