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

Add WSO2 API Manager Docker images to Official Docker Library #6043

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

chirangaalwis
Copy link

@chirangaalwis chirangaalwis commented Jun 7, 2019

Checklist for Review

  • associated with or contacted upstream?
    • Yes, this request has been made by WSO2 Inc. I am one of the maintainers of WSO2 product Docker images.
  • does it fit into one of the common categories? ("service", "language stack", "base distribution")
    • Service
  • is it reasonably popular, or does it solve a particular use case well?
    • WSO2 was named a Leader in The Forrester Wave™: API Management Solutions, Q4 2018 Report.
  • does a documentation PR exist? (should be reviewed and merged at roughly the same time so that we don't have an empty image page on the Hub for very long)
  • dockerization review for best practices and cache gotchas/improvements (ala the official review guidelines)?
  • 2+ dockerization review?
  • existing official images have been considered as a base? (ie, if foobar needs Node.js, has FROM node:... instead of grabbing node via other means been considered?)
    • Yes, we have used Ubuntu 18.04 LTS based Official Docker image with AdoptOpenJDK 8 HotSpot JVM pre-installed ( adoptopenjdk:8u212-b03-jdk-hotspot).
  • if FROM scratch, tarballs only exist in a single commit within the associated history?
  • passes current tests? any simple new tests that might be appropriate to add? (https://github.com/docker-library/official-images/tree/master/test)

@tianon
Copy link
Member

tianon commented Jun 7, 2019

I haven't looked at any of the details yet, but wanted to note that this, #6044, and #6045 all seem pretty inter-dependent (or at least very strongly related). What's the justification for making them separate repositories instead of sharing a single wso2 or wso2am repository with tags to differentiate? (see https://hub.docker.com/_/notary, https://hub.docker.com/_/percona, https://hub.docker.com/_/adoptopenjdk, #4069, #4800, for images using a similar pattern or discussing using a similar pattern).

@chirangaalwis
Copy link
Author

Hi @tianon, I will have an internal discussion with WSO2 members, evaluate the image repository maintenance pattern and the image tagging mechanism which you have suggested and get back to you, ASAP.

@chirangaalwis
Copy link
Author

As per internal discussions with WSO2 members, it was agreed to combine the Docker images for WSO2 API Manager Analytics Worker profile with those of the WSO2 API Manager All In One under the same image repository named wso2am. This is since the WSO2 API Manager Analytics Worker profile heavily depends upon WSO2 API Manager.

WSO2 Identity Server as Key Manager profile can function independently thus, can have its own image repository (named wso2is-km) as planned, initially.

As per the suggestions and the WSO2 product Docker image tagging mechanism, the following tagging format would be used for WSO2 product Docker image names at Official Docker Library.

{image-repository}:{product-profile}-{product-version}-{base-os-platform}

WSO2 API Manager All In One version 2.6.0 Docker image based on Ubuntu will be as follows:

wso2am:2.6.0 = wso2am:{am}-2.6.0-{ubuntu}

Note: Since, WSO2 API Manager All In One is considered the default profile of the wso2am image repository, it is ignored in the shortened version of the tag.

WSO2 API Manager Analytics Worker profile version 2.6.0 Docker image based on Ubuntu will be as follows:

wso2am:2.6.0-analytics-worker = wso2am:analytics-2.6.0-{ubuntu}

WSO2 API Manager Analytics Worker profile version 2.6.0 Docker image based on CentOS will be as follows:

wso2am:analytics-2.6.0-centos

WSO2 Identity Server as Key Manager version 5.7.0 Docker image based on Ubuntu will be as follows:

wso2is-km:5.7.0 = wso2is-km:{is-km}-5.7.0-{ubuntu}

Note: Since, WSO2 IS as KM is considered the default profile of the wso2is-km image repository, it is ignored in the shortened version of the tag.

Hence, closing the GitHub PR #6044 and integrating WSO2 API Manager Analytics Worker profile Docker images under the wso2am image repository.

@chirangaalwis
Copy link
Author

@tianon after further discussions, it was understood that in the case of WSO2 API Management product profiles, API Manager All In One server runtime, API Analytics Worker profile and IS as KM profile are separate applications with each serving its own purpose.

This is in contrast to the examples which you have provided. For example, if we consider the two JVM runtimes of AdoptOpenJDK, OpenJ9 and HotSpot - not on any occasion will both these JVM runtimes will be used together. A user would choose to run only one of these JVM types. Thus, we can choose to tag one of the JVM types as latest within the image repository.

But, with WSO2 API Management product profiles, this isn't possible. Each profile serves its own purpose and each profile will have its own versioning - thus, each profile will need its latest tagged version.

For example,

If the latest version of WSO2 API Manager is 2.6.0, Ubuntu based Docker image will be named as follows:

wso2am:2.6.0 = wso2am:2.6.0-{ubuntu} = wso2am:latest

If the latest version of WSO2 API Manager Analytics Worker profile is 2.6.0, Ubuntu based Docker image will be named as follows:

wso2am-analytics-worker:2.6.0 = wso2am-analytics-worker:2.6.0-{ubuntu} = wso2am-analytics-worker:latest

Thus, we may not be able to follow the above suggested (#6043 (comment)) Docker image repository maintenance mechanism and the corresponding image tagging mechanism.

Hence, I am going to re-open the original PR for WSO2 API Manager Analytics Worker profile image repository (#6044) and we will be sticking to the original image repository maintenance and tagging mechanisms.

Please pardon us for any inconvenience caused to you with the decision changes we've made and we would be grateful to you if you can review the WSO2 API Management product profile image repository request PRs.

@chirangaalwis
Copy link
Author

@tianon first of all, sorry for bothering you!!!

Were you able to go through the comments we've added?

@tianon
Copy link
Member

tianon commented Aug 13, 2019

I'm going to link to/quote part of #6065 (comment) here because I think it's extremely relevant and I believe explains a little better where we're coming from on the many images front:

Sorry, I think we're still disconnected on the "generally useful" bit -- each of these images is not individually "generally useful" and on top of that we don't have any real prior precedent for such a large single-software sprawl of separate images. I think the ELK or TICK stacks are the closest analogs we have, but in those cases they're still individually useful. Elasticsearch is a generic time-series database. Logstash is a generic log-stream processor (Elasticsearch is simply one optional input/output plugin among many others within it).

While these do appear to be "separate applications", are they really "generally useful" independently?

@chirangaalwis
Copy link
Author

chirangaalwis commented Aug 14, 2019

Hi @tianon, yes, each of the suggested WSO2 API Management product servers are separate applications. Apart from WSO2 API Manager All In One server, rest of the server profiles are less useful as independent applications. In other words, rest of these server profiles are useful when used in conjunction with WSO2 API Manager All In One server.

Hence, based on internal discussions between WSO2 members, it was agreed to move on with promoting only the WSO2 API Manager All In One server Docker image to Official Docker Library (which is the focus of this PR).

Please feel free to share your thoughts and concerns with regards to this matter.

@chirangaalwis
Copy link
Author

@tianon as per comment #6043 (comment), I am closing the following PRs.

Hence as of now, we would be moving forward with promoting only the WSO2 API Manager All In One server Docker image to the Official Docker Library (which is the focus of this PR) and its corresponding documentation PR (docker-library/docs#1496).

@github-actions
Copy link

github-actions bot commented May 5, 2020

Diff for 85716a8:
failed fetching repo "wso2am"
unable to find a manifest named "wso2am" (in "/tmp/tmp.HsEAIQRqq3/oi/library" or as a remote URL)
cp: cannot stat 'tar/wso2am_latest/http://central.maven.org/maven2/mysql/mysql-connector-java/${MYSQL_CONNECTOR_VERSION}/mysql-connector-java-${MYSQL_CONNECTOR_VERSION}.jar': No such file or directory

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants