1
0

Compare commits

...

25 Commits

Author SHA1 Message Date
ae39dd8db4
Update to 10.5.0. 2019-12-10 17:49:35 +01:00
2154421f4a
Revert ImageIO replacement, bump Tomcat to v9. 2018-08-24 23:00:25 +02:00
6e4e4be40d
Download ImageIO. 2018-08-24 17:36:23 +02:00
d2cf269638
Converted to Airsonic 10.1.2. 2018-08-22 22:58:11 +02:00
79c099482b
Update to 6.1.3. 2017-11-09 12:40:51 +01:00
ee59c6548a
Update deprecated MAINTAINER tag. 2017-10-23 13:38:47 +02:00
b52a23c517
Update to Subsonic 6.1.2. 2017-10-23 13:35:23 +02:00
a9ceea78f7 Update to Subsonic 6.1.1. 2017-06-15 01:32:44 +02:00
76fcb32ddb Add openssl package to fix https-download from SourceForge. 2017-05-20 18:22:44 +02:00
e6a5429b18 Fix download URL. 2017-05-20 17:51:26 +02:00
9bd769c038 Added label-schema labels. 2016-07-29 14:00:35 +02:00
32c6eeef08 Added MicroBadger (ImageLayers broken!). Small fixes to linked repos. 2016-07-29 13:49:44 +02:00
2ef7d70796 Cleanup and improved README. 2016-05-26 13:57:14 +02:00
9759153960 Added MAX_MEM environment var and a few java parameters taken from
hurricanehrndz/docker-subsonic.
2016-05-26 12:43:36 +02:00
b4983c4e8c Use manual timezone setup instead of installing alpine-conf. 2016-05-26 12:19:21 +02:00
4f782d1103 Add timezone setup. 2016-05-26 12:16:04 +02:00
e36184e0cc Fix wget quiet parameter. 2016-05-26 11:59:58 +02:00
eee3b84569 Use minimal Tomcat image as base. Changed paths to be compatible with
hurricane/docker-subsonic.
2016-05-26 11:51:35 +02:00
Cyrille Nofficial
a2c58d4012 Upgrade to 6.0 2016-05-22 10:47:13 +02:00
Cyrille Nofficial
8c46aa8df5 Upgrade to 6.0 2016-02-21 15:37:48 +01:00
Cyrille Nofficial
d66dbf5824 Support X-FORWARDED-* headers 2015-10-29 20:16:35 +01:00
Cyrille Nofficial
d21e66940e Set context path to "/" 2015-10-29 20:15:57 +01:00
Cyrille Nofficial
429ff0cc41 Use tomcat as servlet engine 2015-10-28 23:30:26 +01:00
Cyrille Nofficial
d8ef67a251 Upgrade to 5.3 2015-10-28 20:31:08 +01:00
Cyrille Nofficial
95bd308223 Upgrade to 5.3.beta2 2015-10-11 11:49:49 +02:00
3 changed files with 215 additions and 53 deletions

View File

@ -1,39 +1,32 @@
FROM java:8
MAINTAINER Cyrille Nofficial<cynoffic@cyrilix.fr>
FROM jeanblanchard/tomcat:8
ENV SUBSONIC_VERSION 5.2.1
ENV PORT 8080
ENV CONTEXT_PATH /
ENV AIRSONIC_VERSION="10.5.0" LC_ALL="C.UTF-8" LANG="C.UTF-8" LANGUAGE="C.UTF-8" TZ="Europe/Berlin" MAX_MEM="256"
LABEL version="$SUBSONIC_VERSION"
LABEL description="Subsonic media streamer"
LABEL maintainer="Markus Birth <markus@birth-online.de>"
LABEL version="$AIRSONIC_VERSION"
LABEL description="Airsonic is a free, web-based media streamer, providing ubiquitious access to your music."
LABEL org.label-schema.name="Airsonic" \
org.label-schema.url="https://airsonic.github.io/" \
org.label-schema.vcs-type="Git" \
org.label-schema.vcs-url="https://github.com/airsonic/airsonic"
RUN apt-get update &&\
apt-get -y install libav-tools lame &&\
adduser --system --home /opt/subsonic subsonic &&\
mkdir -p /opt/data/transcode /opt/music/ /opt/playlist/ /opt/podcast/ &&\
chown -R subsonic /opt/data /opt/playlist/ /opt/podcast/ &&\
ln -s /usr/bin/lame /opt/data/transcode/lame &&\
ln -s /usr/bin/avconv /opt/data/transcode/ffmpeg &&\
wget "http://downloads.sourceforge.net/project/subsonic/subsonic/$SUBSONIC_VERSION/subsonic-$SUBSONIC_VERSION-standalone.tar.gz?r=http%3A%2F%2Fwww.subsonic.org%2Fpages%2Fdownload2.jsp%3Ftarget%3Dsubsonic-$SUBSONIC_VERSION-standalone.tar.gz&ts=1431096340&use_mirror=garr" \
-O- --quiet | tar zxv -C /opt/subsonic
RUN apk upgrade -U \
&& apk add ca-certificates openssl ffmpeg lame tzdata \
&& cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo "${TZ}" > /etc/timezone \
&& mkdir -p /data/transcode /music/ /playlists/ /podcasts/ \
&& ln -s /usr/bin/lame /data/transcode/lame \
&& ln -s /usr/bin/ffmpeg /data/transcode/ffmpeg \
&& cd ${CATALINA_HOME}/webapps/ \
&& rm -rf ROOT \
&& wget -q "https://github.com/airsonic/airsonic/releases/download/v${AIRSONIC_VERSION}/airsonic.war" \
-O ROOT.war \
&& apk del tzdata \
&& rm -rf /var/cache/*
VOLUME /opt/data
VOLUME /opt/music/
VOLUME /opt/playlist/
VOLUME /opt/podcast/
ADD server.xml ${CATALINA_HOME}/conf/
ENV JAVA_OPTS="-Xmx${MAX_MEM}m -Dserver.host=0.0.0.0 -Dserver.contextPath=/ -Dairsonic.home=/data -Dairsonic.defaultMusicFolder=/music/ -Dairsonic.defaultPodcastFolder=/podcasts/ -Dairsonic.defaultPlaylistFolder=/playlists/ -Djava.awt.headless=true"
EXPOSE $PORT
WORKDIR /opt/subsonic
VOLUME ["/data", "/music/", "/playlists/", "/podcasts/"]
USER subsonic
CMD java -Xmx100m \
-Dsubsonic.home=/opt/data \
-Dsubsonic.port=$PORT \
-Dsubsonic.contextPath=$CONTEXT_PATH \
-Dsubsonic.defaultMusicFolder=/opt/music/ \
-Dsubsonic.defaultPodcastFolder=/opt/podcast/ \
-Dsubsonic.defaultPlaylistFolder=/opt/playlist/ \
-Djava.awt.headless=true \
-verbose:gc \
-jar /opt/subsonic/subsonic-booter-jar-with-dependencies.jar
EXPOSE 8080

View File

@ -1,44 +1,64 @@
This repository contains configuration files for building a
Docker (http://docker.io) image for the Subsonic media streamer.
[Docker](https://docker.com/) image for the Airsonic media streamer.
## Noteworthy
[![](https://imagelayers.io/badge/mbirth/airsonic:latest.svg)](https://imagelayers.io/?images=mbirth/airsonic:latest 'Get your own badge on imagelayers.io')
[![](https://images.microbadger.com/badges/image/mbirth/airsonic.svg)](http://microbadger.com/#/images/mbirth/airsonic "Get your own image badge on microbadger.com")
* Subsonic 5.2.1 (http://www.subsonic.org)
## Build your own image
Noteworthy
----------
* [Airsonic 10.5.0](https://airsonic.github.io/)
* based on [cyrilix](https://github.com/cyrilix)/[docker-subsonic](https://github.com/cyrilix/docker-subsonic)
* uses [jeanblanchard](https://github.com/jeanblanchard)/[tomcat](https://hub.docker.com/r/jeanblanchard/tomcat/) with Alpine Linux
* compiles to a 266 MB image instead of [cyrilix](https://hub.docker.com/r/cyrilix/subsonic/)'s 484 MB
Volumes
-------
* `/data` --- Directory to store Airsonic's log, configuration and database
* `/music` --- Default music folder
* `/podcasts` --- Default podcast folder
* `/playlists` --- Default playlist folder
Environment Variables
---------------------
* `TZ` --- timezone setting, default: `Europe/Berlin`
* `MAX_MEM` --- maximum Java heap size in megabytes, default: `256`
Build your own image
--------------------
```shell
$ docker build -t <your-name>/docker-subsonic .
$ docker build -t <your-name>/docker-airsonic .
```
## Get a pre-built image
Get a pre-built image
---------------------
A current image is available as a trusted build from the Docker index:
```shell
$ docker pull cyrilix/subsonic
$ docker pull mbirth/airsonic
```
The repository page is at
https://index.docker.io/u/cyrilix/subsonic/
https://hub.docker.com/r/mbirth/airsonic/
## Run a container with this image
Run a container with this image
-------------------------------
```shell
$ docker run \
--detach \
--publish 8080:8080 \
--volume "/wherever/your/music/is:/opt/music/:ro" \
<your-name>/subsonic
--volume "/wherever/your/music/is:/music/:ro" \
<your-name>/airsonic
```
## Configuration
Specify env variables:
* CONTEXT_PATH = The context path, i.e., the last part of the Subsonic URL. Typically '/' or '/subsonic'. Default '/'
* PORT = The port on which Subsonic will listen for incoming HTTP traffic. Default: 8080

149
server.xml Normal file
View File

@ -0,0 +1,149 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Note: A "Server" is not itself a "Container", so you may not
define subcomponents such as "Valves" at this level.
Documentation at /docs/config/server.html
-->
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" Note: A "Service" is not itself a "Container",
so you may not define subcomponents such as "Valves" at this level.
Documentation at /docs/config/service.html
-->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="utf-8" />
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) -->
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-FORWARDED-FOR"
proxiesHeader="X-FORWARDED-BY"
protocolHeader="X-FORWARDED-PROTO"
/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>