From c5767b5141078b57c740a34243738683463d5744 Mon Sep 17 00:00:00 2001 From: jmoore Date: Tue, 29 Jan 2019 17:04:40 +0000 Subject: [PATCH 1/6] Add wait-on-login from omero-test-infra --- docker-compose.yml | 38 +++++++++++++++++++++++++++++ wait-on-login | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 docker-compose.yml create mode 100755 wait-on-login diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..1ebd9eeb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3" +# +# Compose for the development of this docker image +# +services: + database: + image: "postgres:9.6" + environment: + - POSTGRES_USER=omero + - POSTGRES_DB=omero + - POSTGRES_PASSWORD=omero + networks: + - omero + volumes: + - "database:/var/lib/postgresql/data" + + omero: + build: . + environment: + - CONFIG_omero_db_host=database + - CONFIG_omero_db_user=omero + - CONFIG_omero_db_pass=omero + - CONFIG_omero_db_name=omero + - ROOTPASS=omero + networks: + - omero + ports: + - "4063:4063" + - "4064:4064" + volumes: + - "omero:/OMERO" + +networks: + omero: + +volumes: + database: + omero: diff --git a/wait-on-login b/wait-on-login new file mode 100755 index 00000000..34c64410 --- /dev/null +++ b/wait-on-login @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +import atexit +import os +import socket +import sys +import time + + +OMERO_DIST = os.environ.get("OMERO_DIST", "/opt/omero/server/OMERO.server") +if not os.path.exists(OMERO_DIST): + OMERO_DIST = "/opt/omero/web/OMERO.web" + +sys.path.append("/".join([OMERO_DIST, "lib/python"])) +import omero + +OMERO_HOST = os.environ.get("OMERO_HOST", "localhost") +OMERO_USER = os.environ.get("OMERO_USER", "root") +OMERO_PASS = os.environ.get("OMERO_PASS", "omero") +OMERO_PORT = int(os.environ.get("OMERO_PORT", "4064")) +SLEEP_TIME = int(os.environ.get("SLEEP_TIME", "30")) + + +def end(): + print "travis_fold:end:wait-on-login" + +atexit.register(end) + +print "travis_fold:start:wait-on-login" + + +def port_is_open(): + rc = socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex((OMERO_HOST, OMERO_PORT)) + return (rc == 0) + + +for x in range(1, 31): + if port_is_open(): + break + else: + time.sleep(1.0) + print "waiting on port: #%s" % x + + +# HACK: This 'ready' detection is still not working. Adding a hard sleep to be safe. +print "Sleeping for", SLEEP_TIME +time.sleep(SLEEP_TIME) + +# Second: try to login +for x in range(1, 6): + # https://trello.com/c/rPstbt4z/216-open-ssl-110 + client = omero.client(OMERO_HOST, OMERO_PORT) + try: + client.createSession(OMERO_USER, OMERO_PASS) + break + except: + print "Login attempt %s failed. Trying again in %s seconds" % (x, x+1) + time.sleep(x+1) + finally: + client.__del__() From c6ad6bcbd5b5ee5893d20848ca9c9b70fe534a82 Mon Sep 17 00:00:00 2001 From: jmoore Date: Wed, 30 Jan 2019 14:35:32 +0000 Subject: [PATCH 2/6] Use ice_python_wheel for faster builds --- playbook.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/playbook.yml b/playbook.yml index f4823e29..943531d9 100644 --- a/playbook.yml +++ b/playbook.yml @@ -4,9 +4,7 @@ vars: ice_version: "3.6" ice_install_devel: False + ice_python_wheel: https://github.com/ome/zeroc-ice-py-centos7/releases/download/0.1.0/zeroc_ice-3.6.4-cp27-cp27mu-linux_x86_64.whl omero_server_database_manage: False omero_server_systemd_setup: False omero_server_system_uid: 1000 - # You can reduce the size of the image by providing the URL to a - # precompiled Ice Python wheel - #ice_python_wheel: From 226745613d266bd17cb1ca2732140932d7b996be Mon Sep 17 00:00:00 2001 From: jmoore Date: Wed, 30 Jan 2019 14:36:15 +0000 Subject: [PATCH 3/6] Activate figure script --- playbook.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/playbook.yml b/playbook.yml index 943531d9..35c8af33 100644 --- a/playbook.yml +++ b/playbook.yml @@ -8,3 +8,33 @@ omero_server_database_manage: False omero_server_systemd_setup: False omero_server_system_uid: 1000 + + # TODO: copied from https://github.com/openmicroscopy/prod-playbooks/blob/bd5b837c740ae79806d911893ace38701c204381/ome-dundeeomero.yml + # Should be part of a figure-server role + tasks: + - name: OMERO.figure server-side prerequisites, script prerequisites + web server for decoupled OMERO.web + become: yes + yum: + name: "{{ item }}" + state: present + with_items: + - python-reportlab + - python-markdown + + - name: Create a figure scripts directory + become: yes + file: + path: /opt/omero/server/OMERO.server/lib/scripts/omero/figure_scripts + state: directory + mode: 0755 + recurse: yes + owner: root + + - name: Download the Figure_To_Pdf.py script + become: yes + get_url: + url: https://raw.githubusercontent.com/ome/omero-figure/{{ omero_figure_tag | default("master") }}/omero_figure/scripts/omero/figure_scripts/Figure_To_Pdf.py + dest: /opt/omero/server/OMERO.server/lib/scripts/omero/figure_scripts/Figure_To_Pdf.py + mode: 0644 + owner: root + checksum: "{{ omero_figure_pdfscript_checksum | default(omit) }}" From e0611113e2c529b4a6c1a3576444637f70f61dae Mon Sep 17 00:00:00 2001 From: jmoore Date: Wed, 30 Jan 2019 14:36:34 +0000 Subject: [PATCH 4/6] Import on startup all files in /import --- 99-run.sh | 2 ++ Dockerfile | 2 ++ import-all | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100755 import-all diff --git a/99-run.sh b/99-run.sh index ec83b891..ff5cddbd 100755 --- a/99-run.sh +++ b/99-run.sh @@ -4,5 +4,7 @@ set -eu omero=/opt/omero/server/OMERO.server/bin/omero cd /opt/omero/server +echo "Running importer in the background" +sh -c "/tools/wait-on-login && /tools/import-all" & echo "Starting OMERO.server" exec $omero admin start --foreground diff --git a/Dockerfile b/Dockerfile index 6231eaac..8674a326 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,8 @@ RUN curl -L -o /usr/local/bin/dumb-init \ chmod +x /usr/local/bin/dumb-init ADD entrypoint.sh /usr/local/bin/ ADD 50-config.py 60-database.sh 99-run.sh /startup/ +ADD wait-on-login import-all /tools/ +RUN mkdir /import && touch /import/test.fake USER omero-server diff --git a/import-all b/import-all new file mode 100755 index 00000000..ca65e6b6 --- /dev/null +++ b/import-all @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +import atexit +import os +import socket +import sys +import time + + +OMERO_DIST = os.environ.get("OMERO_DIST", "/opt/omero/server/OMERO.server") +if not os.path.exists(OMERO_DIST): + OMERO_DIST = "/opt/omero/web/OMERO.web" + +sys.path.append("/".join([OMERO_DIST, "lib/python"])) +import omero +from omero.cli import cli_login +from omero.util.import_candidates import as_dictionary + + +OMERO_HOST = os.environ.get("OMERO_HOST", "localhost") +OMERO_USER = os.environ.get("OMERO_USER", "root") +OMERO_PASS = os.environ.get("OMERO_PASS", "omero") +OMERO_PORT = int(os.environ.get("OMERO_PORT", "4064")) +SLEEP_TIME = int(os.environ.get("SLEEP_TIME", "30")) + + +with cli_login("-s", OMERO_HOST, + "-u", OMERO_USER, + "-p", str(OMERO_PORT), + "-w", OMERO_PASS) as cli: + + for k, v in as_dictionary(("/import",)).items(): + cli.onecmd(["import", k]) From b0274b6d89241284c772ccef3541e3670e2fd283 Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 11:05:57 +0100 Subject: [PATCH 5/6] Use merge build in docker-compose see: https://github.com/ome/omero-web-docker/pull/29 --- .env | 4 ++++ docker-compose.yml | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..edd4698b --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +REPO=test +PREFIX=test +TCP_PORT= +SSL_PORT=4064: diff --git a/docker-compose.yml b/docker-compose.yml index 1ebd9eeb..d1ce0519 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3" +version: "3.3" # # Compose for the development of this docker image # @@ -15,7 +15,12 @@ services: - "database:/var/lib/postgresql/data" omero: - build: . + image: ${REPO}/omero-server:${PREFIX} + build: + context: . + args: + - OMEGO_ADDITIONAL_ARGS="--ci=https://merge-ci.openmicroscopy.org/jenkins/" + - OMERO_VERSION="OMERO-build" environment: - CONFIG_omero_db_host=database - CONFIG_omero_db_user=omero @@ -25,10 +30,11 @@ services: networks: - omero ports: - - "4063:4063" - - "4064:4064" + - "${TCP_PORT}4063" + - "${SSL_PORT}4064" volumes: - "omero:/OMERO" + - "./:/src:ro" networks: omero: From eb93998fab3c0c11261b38ee4a0ac6a5837af598 Mon Sep 17 00:00:00 2001 From: jmoore Date: Wed, 22 May 2019 22:54:00 +0100 Subject: [PATCH 6/6] Split server image into minimal & extended --- 99-run.sh | 2 -- Dockerfile | 11 ++++++----- docker-compose.yml | 14 ++++++++++++-- extended/95-background.sh | 10 ++++++++++ extended/Dockerfile | 8 ++++++++ import-all => extended/import-all | 0 wait-on-login => extended/wait-on-login | 0 7 files changed, 36 insertions(+), 9 deletions(-) create mode 100755 extended/95-background.sh create mode 100644 extended/Dockerfile rename import-all => extended/import-all (100%) rename wait-on-login => extended/wait-on-login (100%) diff --git a/99-run.sh b/99-run.sh index ff5cddbd..ec83b891 100755 --- a/99-run.sh +++ b/99-run.sh @@ -4,7 +4,5 @@ set -eu omero=/opt/omero/server/OMERO.server/bin/omero cd /opt/omero/server -echo "Running importer in the background" -sh -c "/tools/wait-on-login && /tools/import-all" & echo "Starting OMERO.server" exec $omero admin start --foreground diff --git a/Dockerfile b/Dockerfile index 8674a326..7216126d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,10 @@ FROM centos:centos7 -MAINTAINER ome-devel@lists.openmicroscopy.org.uk -LABEL org.openmicroscopy.release-date="unknown" -LABEL org.openmicroscopy.commit="unknown" +ARG CREATED=unknown +ARG REVISION=unknown +LABEL maintainer="ome-devel@lists.openmicroscopy.org.uk" +LABEL org.opencontainers.image.created="${CREATED}" +LABEL org.opencontainers.image.revision="${REVISION}" +LABEL org.opencontainers.image.source="https://github.com/ome/omero-server-docker" RUN mkdir /opt/setup WORKDIR /opt/setup @@ -22,8 +25,6 @@ RUN curl -L -o /usr/local/bin/dumb-init \ chmod +x /usr/local/bin/dumb-init ADD entrypoint.sh /usr/local/bin/ ADD 50-config.py 60-database.sh 99-run.sh /startup/ -ADD wait-on-login import-all /tools/ -RUN mkdir /import && touch /import/test.fake USER omero-server diff --git a/docker-compose.yml b/docker-compose.yml index d1ce0519..df85d3a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,13 +14,21 @@ services: volumes: - "database:/var/lib/postgresql/data" - omero: - image: ${REPO}/omero-server:${PREFIX} + minimal: + image: ${REPO}/omero-server-minimal:${PREFIX} build: context: . args: - OMEGO_ADDITIONAL_ARGS="--ci=https://merge-ci.openmicroscopy.org/jenkins/" - OMERO_VERSION="OMERO-build" + entrypoint: "true" + + omero: + image: ${REPO}/omero-server:${PREFIX} + build: + context: extended + args: + - PARENT_IMAGE=${REPO}/omero-server-minimal:${PREFIX} environment: - CONFIG_omero_db_host=database - CONFIG_omero_db_user=omero @@ -35,6 +43,8 @@ services: volumes: - "omero:/OMERO" - "./:/src:ro" + depends_on: + - minimal networks: omero: diff --git a/extended/95-background.sh b/extended/95-background.sh new file mode 100755 index 00000000..ff5cddbd --- /dev/null +++ b/extended/95-background.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -eu + +omero=/opt/omero/server/OMERO.server/bin/omero +cd /opt/omero/server +echo "Running importer in the background" +sh -c "/tools/wait-on-login && /tools/import-all" & +echo "Starting OMERO.server" +exec $omero admin start --foreground diff --git a/extended/Dockerfile b/extended/Dockerfile new file mode 100644 index 00000000..fd3f4385 --- /dev/null +++ b/extended/Dockerfile @@ -0,0 +1,8 @@ +ARG PARENT_IMAGE=openmicroscopy/omero-server-minimal:latest +FROM ${PARENT_IMAGE} + +USER root +ADD wait-on-login import-all /tools/ +ADD 95-background.sh /startup/ +RUN mkdir /import && touch /import/test.fake +USER omero-server diff --git a/import-all b/extended/import-all similarity index 100% rename from import-all rename to extended/import-all diff --git a/wait-on-login b/extended/wait-on-login similarity index 100% rename from wait-on-login rename to extended/wait-on-login