Skip to content
This repository was archived by the owner on Jan 17, 2023. It is now read-only.

Commit 4618134

Browse files
author
Alex Collins
committed
Merge pull request #112 from atc-/0.96.0
0.96.0
2 parents 6315845 + cd6d177 commit 4618134

File tree

11 files changed

+150
-39
lines changed

11 files changed

+150
-39
lines changed

.dockerignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.*.swp
2+
.git
3+
target

Dockerfile

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
1-
FROM astral1/tomcat7
2-
3-
RUN mkdir /var/lib/h2
4-
5-
RUN chmod a+rw /var/lib/h2
6-
7-
RUN rm -rf /tomcat7/webapps/*
8-
9-
VOLUME ["/var/lib/h2/", "/tomcat7"]
10-
11-
ADD http://atc.gd/docker-registry-ui.war /tomcat7/webapps/ROOT.war
12-
13-
ADD startup.sh /tomcat7/startup.sh
14-
15-
CMD /tomcat7/startup.sh
1+
FROM ubuntu:14.04
2+
3+
# Install java and tomcat
4+
RUN apt-get update && apt-get install -y tomcat7 openjdk-7-jdk
5+
RUN mkdir /var/lib/h2 && chmod a+rw /var/lib/h2
6+
RUN rm -rf /var/lib/tomcat7/webapps/*
7+
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64/
8+
9+
# Install grails and project dependencies
10+
WORKDIR /work
11+
ADD grailsw /work/grailsw
12+
ADD wrapper /work/wrapper
13+
ADD application.properties /work/application.properties
14+
ADD grails-app/conf/BuildConfig.groovy /work/grails-app/conf/BuildConfig.groovy
15+
RUN ./grailsw help
16+
17+
# Add project files and build a war
18+
ADD . /work
19+
RUN ./grailsw war
20+
RUN cp target/docker-registry-ui-*.war /var/lib/tomcat7/webapps/ROOT.war
21+
22+
# Update catalina configuration
23+
WORKDIR /usr/share/tomcat7/bin/
24+
ADD startup.sh /usr/share/tomcat7/bin/custom-startup.sh
25+
RUN chmod +x /usr/share/tomcat7/bin/custom-startup.sh
26+
27+
EXPOSE 8080
28+
VOLUME ["/var/lib/h2/", "/var/lib/tomcat7"]
29+
ENV CATALINA_BASE /var/lib/tomcat7
30+
CMD /usr/share/tomcat7/bin/custom-startup.sh
1631

application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
#Wed Jul 09 18:55:10 BST 2014
33
app.grails.version=2.4.2
44
app.name=docker-registry-ui
5-
app.version=0.9.5
5+
app.version=0.96.0

grails-app/controllers/docker/registry/web/RepositoryController.groovy

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,12 @@ import docker.registry.web.support.RegistryReposView
66
class RepositoryController {
77

88
def repositoryService
9+
def registryViewService
910
static allowedMethods = [delete: 'DELETE']
1011

1112
def index() {
12-
def registries = [] as Set<RegistryReposView>
13-
14-
Registry.all.each { registry ->
15-
def repositories = []
16-
def reachable = true
17-
try {
18-
repositories = repositoryService.index(registry)
19-
20-
} catch (errorRetrievingReposFromRegistry) {
21-
reachable = false
22-
log.error("The registry ${registry.toUrl()} is unreachable")
23-
}
24-
registries.add( RegistryReposView.make(registry, repositories, reachable) )
25-
}
26-
27-
render view: "index", model: [registryAndReposViewSet: registries]
13+
def registries = registryViewService.viewRegistries()
14+
render view: "index", model: [registryViewSet: registries]
2815
}
2916

3017
def show(final int registryId, final String repoName, final String tag, final String imgId) {

grails-app/controllers/docker/registry/web/SearchController.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ class SearchController {
1010

1111
def search(String q) {
1212
final resultMap = searchService.searchAll(new Search(query: q))
13-
render view: "/repository/index", model: [registryToRepoMap: resultMap]
13+
render view: "results", model: [registryToRepoMap: resultMap]
1414
}
1515
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package docker.registry.ui
2+
3+
import docker.registry.web.Registry
4+
import docker.registry.web.support.RegistryReposView
5+
import grails.transaction.Transactional
6+
7+
@Transactional(readOnly = true)
8+
class RegistryViewService {
9+
10+
def repositoryService
11+
12+
def viewRegistries() {
13+
def registries = [] as Set<RegistryReposView>
14+
Registry.all.each { registry ->
15+
def repositories = []
16+
def reachable = true
17+
try {
18+
repositories = repositoryService.index(registry)
19+
20+
} catch (errorRetrievingReposFromRegistry) {
21+
reachable = false
22+
log.error("The registry ${registry.toUrl()} is unreachable")
23+
}
24+
registries.add(RegistryReposView.make(registry, repositories, reachable))
25+
}
26+
registries
27+
}
28+
29+
}

grails-app/views/repository/index.gsp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77

88
<body>
99

10-
<g:set var="multipleRegistries" value="${registryAndReposViewSet.size() > 1}"/>
11-
<g:each in="${registryAndReposViewSet}" var="entry">
10+
<g:set var="multipleRegistries" value="${registryViewSet?.size() > 1}"/>
11+
<g:each in="${registryViewSet}" var="entry">
1212
<h3>Registry ${entry.registry.host}</h3>
1313
<g:if test="${!entry.isReachable}">
1414
<div class="alert alert-dismissable alert-danger">
15-
<strong>Oh snap!</strong> This server is Unreachable!
15+
<strong>Oh no!</strong> This registry is unreachable!
1616
</div>
1717
</g:if>
1818

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta name="layout" content="main">
5+
<title>Docker Registry - Image List</title>
6+
</head>
7+
8+
<body>
9+
10+
<g:each in="${registryToRepoMap}" var="entry">
11+
<g:set var="registry" value="${entry.key}"/>
12+
<g:set var="repositories" value="${entry.value}"/>
13+
14+
<h3>Registry ${registry.host}</h3>
15+
16+
<table id="imgTbl" class="table table-striped table-hover">
17+
<thead>
18+
<tr>
19+
<th>Tag</th>
20+
<th></th>
21+
</tr>
22+
</thead>
23+
<tbody>
24+
<g:each in="${repositories}" var="repo">
25+
<g:each in="${repo.tags}" var="tag">
26+
<tr>
27+
<td>
28+
<g:link controller="repository" action="show"
29+
params="[registryId: registry.id, repoName: repo.name, tag: tag.name, imgId: tag.imageId]">
30+
<util:generatePullName registry="${registry}" repoName="${repo.name}" tag="${tag.name}"/></g:link>
31+
</td>
32+
<td>
33+
<g:link controller="repository" action="show"
34+
params="[registryId: registry.id, repoName: repo.name, tag: tag.name, imgId: tag.imageId]">
35+
<asset:image src="icons/link.png" /></asset>
36+
</g:link> |
37+
<a href="#" class="pullImg" data-pullName='<util:generatePullName registry="${registry}" repoName="${repo.name}" tag="${tag.name}"/>'>
38+
<asset:image src="icons/book_download.png"/>
39+
</a> |
40+
<a href="#" class="deleteImg" data-registryId="${registry.id}" data-repoName="${repo.name}" data-tag="${tag.name}">
41+
<asset:image src="icons/garbage.png"/>
42+
</a>
43+
</td>
44+
</tr>
45+
</g:each>
46+
</tbody>
47+
</g:each>
48+
</table>
49+
<g:if test="${multipleRegistries}">
50+
<hr/>
51+
</g:if>
52+
</g:each>
53+
<jqDT:resources/>
54+
<g:include view="repository/image-prompts.js.gsp"/>
55+
</body>
56+
</html>

src/groovy/docker/registry/web/support/RegistryReposView.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class RegistryReposView {
1717
* The current list of repositories of the registry.
1818
*/
1919
Set<Repository> repositories = [] as Set
20+
2021
/**
2122
* Whether this registry is reachable or not based on the attempt to reach its URL.
2223
*/

startup.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
if [ -n "$APP_CONTEXT" ]; then
2-
mv /tomcat7/webapps/ROOT.war /tomcat7/webapps/${APP_CONTEXT}.war
2+
mv /var/lib/tomcat7/webapps/ROOT.war /var/lib/tomcat7/webapps/${APP_CONTEXT}.war
33
fi
4-
sed -i '1iexport CATALINA_OPTS=" -Djava.security.egd=file:/dev/./urandom "' bin/catalina.sh
5-
bin/catalina.sh run
4+
sed -i '1iexport CATALINA_OPTS=" -Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv6Addresses=true "' catalina.sh
5+
./catalina.sh run
66

0 commit comments

Comments
 (0)