FROM java:openjdk-8-jdk-alpine
COPY maven /maven/
ENTRYPOINT ["java","-jar","/maven/kontaktregister.jar"]
FROM alpine:3.4
USER root
RUN mkdir -p /deployments
# JAVA_APP_DIR is used by run-java.sh for finding the binaries
ENV JAVA_APP_DIR=/deployments
# /dev/urandom is used as random source, which is prefectly safe
# according to http://www.2uo.de/myths-about-urandom/
RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& apk add --update \
curl \
openjdk8-jre-base \
&& rm -rf /var/cache/apk/ \
&& echo "securerandom.source=file:/dev/urandom" >> /usr/lib/jvm/default-jvm/jre/lib/security/java.security
# Agent bond including Jolokia and jmx_exporter
ADD agent-bond-opts /opt/run-java-options
RUN mkdir -p /opt/agent-bond \
&& curl http://central.maven.org/maven2/io/fabric8/agent-bond-agent/0.1.4/agent-bond-agent-0.1.4.jar \
-o /opt/agent-bond/agent-bond.jar \
&& chmod 444 /opt/agent-bond/agent-bond.jar \
&& chmod 755 /opt/run-java-options
ADD jmx_exporter_config.yml /opt/agent-bond/
EXPOSE 8778 9779
# Add run script as /deployments/run-java.sh and make it executable
COPY run-java.sh debug-options container-limits java-default-options /deployments/
RUN chmod 755 /deployments/run-java.sh /deployments/java-default-options /deployments/container-limits /deployments/debug-options
CMD [ "/deployments/run-java.sh" ]
$ sudo docker build .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM java:openjdk-8-jdk-alpine
openjdk-8-jdk-alpine: Pulling from library/java
3690ec4760f9: Already exists
cfdb77eb56b4: Pull complete
0d438913956e: Pull complete
Digest: sha256:63eb1c79f609dbaa2c587ba3eb772e8e453229ce91fffc378725ca16435348e9
Status: Downloaded newer image for java:openjdk-8-jdk-alpine
---> f23144173f4f
Step 2 : COPY maven /maven/
---> 40d1f13c325e
Removing intermediate container 0f9ab0ab158d
Step 3 : ENTRYPOINT java -jar /maven/kontaktregister.jar
---> Running in 079de001d0aa
---> 0ba9ba7944dc
Removing intermediate container 079de001d0aa
Successfully built 0ba9ba7944dc
$ sudo docker build .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM java:openjdk-8-jdk-alpine
---> f23144173f4f
Step 2 : COPY maven /maven/
---> Using cache
---> 40d1f13c325e
Step 3 : ENTRYPOINT java -jar /maven/kontaktregister.jar
---> Using cache
---> 0ba9ba7944dc
Successfully built 0ba9ba7944dc
(In case of emergency, next slide)
FROM alpine:3.4
RUN apk update
# nginx
RUN apk add nginx
RUN mkdir -p /run/nginx
# start up
ENTRYPOINT nginx -g 'daemon off;'
$ sudo docker build --tag nginx .
Sending build context to Docker daemon 5.12 kB
Step 1 : FROM alpine:3.4
---> baa5d63471ea
Step 2 : RUN apk update
---> Using cache
---> 2e5619c9caa7
Step 3 : RUN apk add nginx
---> Using cache
---> 95a4848b546b
Step 4 : RUN mkdir -p /run/nginx
---> Using cache
---> ccd52cd2286b
Step 5 : ENTRYPOINT nginx -g 'daemon off;'
---> Running in 79399fc4d9ce
---> b88fed45c51a
Removing intermediate container 79399fc4d9ce
Successfully built b88fed45c51a
$ sudo docker run --detach --name nginx-demo nginx
8b7edd53dba5e178d92365243c9a1f44ade31af0fa1afb23a608533195b57409
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b7edd53dba5 nginx "/bin/sh -c 'nginx -g" 4 seconds ago Up 4 seconds nginx-demo
# Vi trenger IP for å curl
$ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' nginx-demo
172.17.0.3
$ curl 172.17.0.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
$ sudo docker logs nginx-demo
# Doh, eksempelet logger jo ikke noe...
$ sudo docker exec --interactive --tty nginx-demo sh
/ #
/ # cat /var/log/nginx/access.log
172.17.0.1 - - [08/Nov/2016:21:23:00 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
# la oss kjøre opp noe som logger
$ sudo docker run --tty nginx-2 --name nginx-demo-2
172.17.0.1 - - [08/Nov/2016:21:40:20 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:21 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:22 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:23 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
# ny terminal
$ sudo docker logs nginx-demo-2
172.17.0.1 - - [08/Nov/2016:21:40:20 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:21 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:22 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
172.17.0.1 - - [08/Nov/2016:21:40:23 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
$ sudo docker build .
Sending build context to Docker daemon 7.196 MB
Step 1 : FROM alpine:3.4
---> baa5d63471ea
Step 2 : RUN apk update
---> Using cache
---> 2e5619c9caa7
Step 3 : RUN apk add ca-certificates
---> Using cache
---> 31eedc255297
Step 4 : RUN apk add ruby
---> Using cache
---> ab8cf7b8d9f9
Step 5 : RUN gem install rack --no-document --no-rdoc
---> Using cache
---> 0cbe6db17faf
Step 6 : ADD config.ru /root/config.ru
---> Using cache
---> 443da6d9526b
Step 7 : ADD startup.sh /usr/local/bin/startup
---> Using cache
---> be999ab502b0
Step 8 : WORKDIR /root
---> Using cache
---> dfb6548cf26a
Step 9 : ENTRYPOINT 'rackup'
---> Using cache
---> 4efd89fef370
Successfully built 4efd89fef370
# Check Ruby version
$ sudo docker run --rm --interactive --tty ab8cf7b8d9f9 sh
/ # ruby --version
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux-musl]
$ sudo docker save -o nginx.tar nginx
$ ll -h
-rw-rw---- 1 kyrremann kyrremann 6,9M nov. 8 22:42 nginx.tar
$ scp nginx.tar user@server:/root/docker/
# opplasting...
$ ssh user@server
/ $ user@server /root:
/ $ user@server /root: cd docker
/ $ user@server /root/docker: sudo docker load -i nginx.tar
Loaded image: nginx:latest
/ $ user@server /root/docker: sudo docker run --detach --name nginx-demo nginx
$ curl https://www.fakeserver.com/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
<configuration>
<images>
<image>
<build>
<from>java:openjdk-8-jdk-alpine</from>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/maven/tzentech/demo-kontaktregister</arg>
</exec>
</entryPoint>
</build>
<name>${difi.docker.registry}/${project.artifactId}:${project.version}</name>
<run>
<ports>
<port>9000:9000</port>
</ports>
</run>
</image>
</images>
</configuration>
FROM alpine:3.4
RUN mkdir -p /var/lib/postgresql/data \
&& chown -R postgres:postgres /var/lib/postgresql/data
VOLUME /var/lib/postgresql/data
ENTRYPOINT ["/bin/echo", "Data-only container"]
sudo docker build --tag data-container .
sudo docker run -d --name data data-container
sudo docker run --volumes-from data --name postgres -e POSTGRES_PASSWORD=db_password -e POSTGRES_USER=db_user -e POSTGRES_DB=db_name -d kiasaki/alpine-postgres