forked from datacite/oaip
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
91 lines (76 loc) · 3.27 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
FROM phusion/baseimage:0.9.22
MAINTAINER Kristian Garza "kgarza@datacite.org"
# Set correct environment variables
ENV HOME /home/app
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
ENV CATALINA_HOME /usr/share/tomcat7
ENV CATALINA_BASE /var/lib/tomcat7
ENV CATALINA_PID /var/run/tomcat7.pid
ENV CATALINA_SH /usr/share/tomcat7/bin/catalina.sh
ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp
ENV DOCKERIZE_VERSION v0.6.0
ENV SHELL /bin/bash
# Use baseimage-docker's init process
CMD ["/sbin/my_init"]
# Install Java and Tomcat
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
apt-get update && apt-get install -y wget apt-utils build-essential zlib1g-dev git nodejs ruby ruby-dev pandoc && \
apt-get install -yqq software-properties-common && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -yqq oracle-java8-installer && \
apt-get install -yqq oracle-java8-set-default && \
apt-get -yqq install tomcat7 maven && \
apt-get install -y nginx nano && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
rm -rf /var/cache/oracle-jdk8-installer
# Configure Tomcat
RUN ln -s /var/lib/tomcat7/common $CATALINA_HOME/common && \
ln -s /var/lib/tomcat7/server $CATALINA_HOME/server && \
ln -s /var/lib/tomcat7/shared $CATALINA_HOME/shared && \
ln -s /etc/tomcat7 $CATALINA_HOME/conf && \
mkdir $CATALINA_HOME/temp && \
mkdir -p $CATALINA_TMPDIR
RUN rm -rf /var/lib/tomcat7/webapps/docs* && \
rm -rf /var/lib/tomcat7/webapps/examples* && \
rm -rf /var/lib/tomcat7/webapps/ROOT*
# install dockerize
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
# Remove unused SSH service
RUN rm -rf /etc/service/sshd /etc/my_init.d/00_regen_ssh_host_keys.sh
# Enable Passenger and Nginx and remove the default site
# Preserve env variables for nginx
RUN rm -f /etc/service/nginx/down && \
rm /etc/nginx/sites-enabled/default && \
ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log
COPY vendor/docker/nginx.conf /etc/nginx/nginx.conf
COPY vendor/docker/webapp.conf /etc/nginx/sites-enabled/webapp.conf
COPY vendor/docker/cors /etc/nginx/conf.d/cors
# Use Amazon NTP servers
COPY vendor/docker/ntp.conf /etc/ntp.conf
# Copy webapp folder
COPY . /home/app/
WORKDIR /home/app
# Add Runit script for tomcat
RUN mkdir /etc/service/tomcat && \
chown tomcat7. /etc/service/tomcat -R
COPY vendor/docker/tomcat.sh /etc/service/tomcat/run
# Copy server configuration (for context path)
COPY vendor/docker/server.xml /etc/tomcat7/server.xml
# Build static site
# Install Ruby gems for middleman
WORKDIR /home/app/vendor/middleman
RUN gem install bundler && \
bundle install
WORKDIR /home/app
# Run additional scripts during container startup (i.e. not at build time)
# Process templates using ENV variables
# Compile project
RUN mkdir -p /etc/my_init.d
COPY vendor/docker/70_templates.sh /etc/my_init.d/70_templates.sh
COPY vendor/docker/80_install.sh /etc/my_init.d/80_install.sh
COPY vendor/docker/90_index_page.sh /etc/my_init.d/90_index_page.sh
EXPOSE 80