DockerFile files and commands for building Docker images in Linux-SpringBook

DockerFile file

Note: Mode 1 is the Docker File file that I used when I built the Docker image in SpringBook, which can be modified by myself.

1. Building a SpringBook Project Mirror Based on the Existing JDK Mirror

#Setting up JDK image
FROM openjdk:8-jdk-slim

VOLUME /tmp

MAINTAINER sunhui

#timezone
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN echo $JAVA_OPTS

ADD task-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2. Mirror based on ubuntu ($app is a placeholder here, instead of jar for your spring boot project)

FROM ubuntu:16.04

MAINTAINER sunhui

ADD jdk-8u151-linux-x64.tar.gz /usr/local/jdk8

ENV JAVA_HOME /usr/local/jdk8/jdk1.8.0_151  
ENV JRE_HOME $JAVA_HOME/jre  
ENV CLASSPATH :$JAVA_HOME/lib:$JRE_HOME/lib  
ENV PATH $PATH:$JAVA_HOME/bin  

ARG appADD $app app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Docker Order and Interpretation

  • FROM: Specify the base image of the created image. If it is not available locally, it will be downloaded from the official library.
  • MAINTAINER: Author Information
  • RUN: Run the specified command. The key point of creating a mirror is the behavior of each RUN, which is the same as the process of creating a mirror manually: create a new layer, execute these commands on it, submit the modification of this layer after execution, and form a new mirror. The above six RUN statements create six layers of mirrors, resulting in very bulky, very many layers of mirrors. So when there are more commands, use newline and & & connector to connect commands. Use as few RUN statements as possible. It can be written as follows: RUN apt-get update&apt-get install-y openssh-server...
  • CMD: Specify the default commands to be executed when the container starts. Each Dockerfile can only have one CMD command. Docker is either a virtual machine or a container is a process. Since it is a process, you need to specify the program and parameters to run when you start the container. The CMD instruction is used to specify the default startup command for the container main process.
  • EXPOSE: Declares the ports that the service in the mirror listens on
  • ADD/COPY: Copy files
  • ENTRYPOINT: Specifies the default entry command for the mirror. The command is executed as the root command at container startup, and all incoming values are taken as parameters of the command.
  • ENV: Setting environment variables, whether it's later instructions, such as RUN, or runtime applications, can directly use the environment variables defined here.
  • ARG: Specify some parameters (such as version number) to be used in the image and pass in in the format --- build-arg < Varname >= < value > when executing the docker build command.
  • WORKDIR: Specify a working directory

3. Using Docker command to build SpringBook image in Linux

Preparations: First install the Docker container in the Linux system and start it, then put the Docker File files and SpringBook jar packages in the same directory, remember not to put them in the root directory (go through the pit), enter the directory to build the image.

1. Building Mirror Command: docker build-t Mirror Name: Version Number.

Example: There is a point at the end, which refers to the current directory. Never drop it!

[root@izuf60j0xye9c3vxjqujjiz local]# docker build -t task:xpv2.0 .

2. View Mirror Command: docker images

[root@izuf60j0xye9c3vxjqujjiz local]# docker images
REPOSITORY                              TAG                       IMAGE ID            CREATED             SIZE
task                                    xpv2.0                    ec7ca41b419b        24 hours ago        378 MB
ccr.ccs.tencentyun.com/linshang/task    xpv1.1                    d1211f22147e        25 hours ago        378 MB
task-svc                                v1.1                      d1211f22147e        25 hours ago        378 MB
ccr.ccs.tencentyun.com/linshang/oauth   test1.1                   af93de61ae81        7 days ago          784 MB
docker.io/openjdk                       8-jdk-slim                e95346262d2e        2 weeks ago         284 MB
docker.io/openjdk                       12.0.1-jdk-oraclelinux7   e92ef2c3a3dd        6 weeks ago         470 MB
docker.io/rabbitmq                      3-management              df6f26ea3e53        3 months ago        213 MB
docker.io/tomcat                        latest                    5a069ba3df4d        3 months ago        465 MB
docker.io/redis                         latest                    a55fbf438dfd        4 months ago        95 MB
docker.io/mysql                         5.5                       4ee01d11a48b        4 months ago        205 MB
docker.io/mysql                         latest                    7bb2586065cd        4 months ago        477 MB
docker.io/java                          8                         d23bdf5b1b1b        2 years ago         643 MB

3. Copy a modified label for Tencent Cloud

[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker tag 6dba9e8c6c6a ccr.ccs.tencentyun.com/linshang/card:test2.0

4. Upload to Tencent Cloud Docker Container, login first, then push

[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker login --username = user name ccr.ccs.tencentyun.com
[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker push ccr.ccs.tencentyun.com/linshang/card:test2.0

 

Keywords: Docker JDK Java Linux

Added by 11Tami on Tue, 06 Aug 2019 13:38:15 +0300