基于alpine制作tomcat镜像

发布时间 2023-10-08 09:51:04作者: 小糊涂90

制作alpine的自定义系统镜像

下载alpine镜像,打新标签

[root@ubuntu1804 ~]#docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

[root@ubuntu1804 ~]#docker tag alpine alpine:3.11
[root@ubuntu1804 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.11 c059bfaa849c 5 months ago 5.59MB
alpine latest c059bfaa849c 5 months ago 5.59MB

准备相关文件

[root@ubuntu1804 ~]# mkdir -p /data/dockerfile/system/alpine
[root@ubuntu1804 ~]#cd /data/dockerfile/system/alpine
[root@ubuntu1804 alpine]#cat repositories
http://mirrors.aliyun.com/alpine/v3.11/main
http://mirrors.aliyun.com/alpine/v3.11/community

准备Dockerfile文件

[root@ubuntu1804 alpine]#cat Dockerfile
FROM alpine:3.11
LABEL maintainer="tanliang"
COPY repositories /etc/apk/repositories
RUN apk update && apk --no-cache add iotop gcc libgcc libc-dev libcurl libc-utils pcre-dev zlib-dev libnfs make pcre pcre2 zip unzip net-tools pstree wget libevent libevent-dev iproute2 openjdk8-jre-base #安装JDK及相关软件包

构建alpine镜像

[root@ubuntu1804 ~]#vim /data/dockerfile/system/alpine/build.sh
[root@ubuntu1804 ~]#cat /data/dockerfile/system/alpine/build.sh

!/bin/bash

docker build -t alpine-jdk:1.8 .
[root@ubuntu1804 alpine]#bash build.sh
......
6/68) Installing wget (1.20.3-r0)
(67/68) Installing zip (3.0-r7)
(68/68) Installing zlib-dev (1.2.11-r3)
Executing busybox-1.34.1-r3.trigger
Executing ca-certificates-20191127-r2.trigger
Executing java-common-0.2-r0.trigger
OK: 256 MiB in 80 packages
Removing intermediate container f04cbc7dcfff
---> 278a3c33c0bb
Successfully built 278a3c33c0bb
Successfully tagged alpine-jdk:1.8

[root@ubuntu1804 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine-jdk 1.8 278a3c33c0bb 2 minutes ago 256MB
alpine 3.11 c059bfaa849c 5 months ago 5.59MB
alpine latest c059bfaa849c 5 months ago 5.59MB

构建alpine镜像卡住解决方法

进入卡住的那一层容器运行此命令报错

root@ubuntu1804:~# docker exec -it f3 sh
/ # apk update && apk --no-cache add iotop gcc libgcc libc-dev libcurl libc-utils pcre-dev
zlib-dev libnfs make pcre pcre2 zip unzip net-tools pstree wget libevent libevent-dev ipr
oute2
ERROR: Unable to lock database: temporary error (try again later)
ERROR: Failed to open apk database: temporary error (try again later)

解决方法:

[root@ubuntu1804 alpine]# cat /etc/default/docker |grep -v '#'
DOCKER_OPTS="--dns 114.114.114.114"
[root@ubuntu1804 alpine]#systemctl restart docker



从JDK镜像构建tomcat 8 Base镜像
下载tomcat安装包
[root@docker ~]# mkdir tomcat &&cd tomcat
[root@docker tomcat]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz

编写Dockerfile文件

[root@docker tomcat]#vim Dockerfile
FROM alpine-jdk:1.8
LABEL maintainer="tanliang"
ENV TZ "Asia/Shanghai"
ENV LANG en_US.UTF-8
ENV TERM xterm
ENV TOMCAT_MAJOR_VERSION 8
ENV TOMCAT_MINOR_VERSION 8.5.78
ENV CATALINA_HOME /apps/tomcat
ENV APP_DIR ${CATALINA_HOME}/webapps
RUN mkdir /apps
ADD apache-tomcat-8.5.78.tar.gz /apps
RUN ln -s /apps/apache-tomcat-8.5.78 /apps/tomcat
EXPOSE 8080 8009
ENTRYPOINT ["/apps/tomcat/bin/catalina.sh","run"]

构建基于alpine-JDK的tomcat镜像

[root@docker tomcat]# docker build -t tomcat-base:v8.5.78 .
emoving intermediate container 9cf40b29814d
---> e52fc15461a4
Step 14/14 : ENTRYPOINT ["/apps/tomcat/bin/catalina.sh","run"]
---> Running in ca3994f70f7c
Removing intermediate container ca3994f70f7c
---> 053aedfa3cea
Successfully built 053aedfa3cea
Successfully tagged tomcat-base:v8.5.78

[root@docker tomcat]# docker images tomcat-base
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-base v8.5.78 053aedfa3cea 19 seconds ago 271MB

创建tomcat容器

[root@docker tomcat]# docker run -d -p 8080:8080 tomcat-base:v8.5.78

测试验证

root@ubuntu1804:/data/dockerfile/tomcat# curl 172.17.0.2:8080 -I
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 13 May 2022 14:50:28 GMT