栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【Docker】记录一些工作中个人对DockerBuild与启动脚本中的实用的奇淫巧技

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Docker】记录一些工作中个人对DockerBuild与启动脚本中的实用的奇淫巧技

记录一些工作中个人对DockerBuild与启动脚本中的实用的奇淫巧技
  • 前言
    • Centos最新镜像Dockefile
    • Java Dockerfile
      • 以apollo-adminservice 编译完成的包作为Dockerfile Copy
      • 以apollo-configservice 编译完成的包作为Dockerfile Copy
      • 以apollo-portal编译完成的包作为Dockerfile Copy
    • 构建脚本,循环对三个服务进行分别打包。
      • Docker-compose.yml

前言

该文主要用于记录给自己看的,言语逻辑上不通的地方请各位看官多多海涵。

Centos最新镜像Dockefile
FROM centos:latest

ENV LANG C.utf8
ENV TZ=Asia/Shanghai

## 自定义用户,下载gosu
RUN groupadd --system --gid=9999 ops && 
    useradd --system --home-dir /home/ --uid=9999 --gid=ops ops

ARG VERSION=1.12
RUN dnf install -y wget && wget -O /usr/local/bin/gosu  https://github.com/tianon/gosu/releases/download/${VERSION}/gosu-amd64 && chmod a+x /usr/local/bin/gosu

WORKDIR /home/ops
Java Dockerfile
FROM 7024253/centos:1.0

RUN mv /etc/yum.repos.d/ /etc/yum.repos.d_bak && mkdir -p  /etc/yum.repos.d/ && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

RUN dnf install -y java-1.8.0-openjdk-devel.x86_64 unzip

ENV JAVA_HOME=/etc/alternatives/java_sdk

以apollo-adminservice 编译完成的包作为Dockerfile Copy
FROM 7014253/java:1.0

ARG VERSION=2.0.0-RC1
ARG APP=apollo-adminservice
ENV VERSION $VERSION

COPY $APP-${VERSION}-github.zip /$APP/$APP-${VERSION}-github.zip
#COPY config/app.properties config/$APP.conf scripts .
RUN unzip /$APP/$APP-${VERSION}-github.zip -d /$APP 
    && rm -rf /$APP/$APP-${VERSION}-github.zip
COPY config/ /$APP/config/
#RUN ls /$APP/scripts
COPY scripts/startup.sh /$APP/scripts/startup.sh
#RUN cat /$APP/scripts/startup.sh
RUN ln -s  /$APP/$APP-${VERSION}.jar $APP.jar && chmod +x /$APP/scripts/startup.sh

ENV APOLLO_RUN_MODE "Docker"

CMD ["/apollo-adminservice/scripts/startup.sh"]

以apollo-configservice 编译完成的包作为Dockerfile Copy
FROM 7014253/java:1.0

ARG VERSION=2.0.0-RC1
ARG APP=apollo-configservice
ENV VERSION $VERSION

COPY $APP-${VERSION}-github.zip /$APP/$APP-${VERSION}-github.zip
RUN unzip /$APP/$APP-${VERSION}-github.zip -d /$APP 
    && rm -rf /$APP/$APP-${VERSION}-github.zip
COPY config/ /$APP/config/
COPY scripts/startup.sh /$APP/scripts/startup.sh
RUN ln -s  /$APP/$APP-${VERSION}.jar $APP.jar && chmod +x /$APP/scripts/startup.sh

ENV APOLLO_RUN_MODE "Docker"

CMD ["/apollo-configservice/scripts/startup.sh"]

以apollo-portal编译完成的包作为Dockerfile Copy
FROM 7014253/java:1.0

ARG VERSION=2.0.0-RC1
ARG APP=apollo-portal
ENV VERSION $VERSION

COPY $APP-${VERSION}-github.zip /$APP/$APP-${VERSION}-github.zip
RUN unzip /$APP/$APP-${VERSION}-github.zip -d /$APP 
    && rm -rf /$APP/$APP-${VERSION}-github.zip
COPY config/ /$APP/config
COPY scripts/startup.sh /$APP/scripts/startup.sh
RUN ln -s  /$APP/$APP-${VERSION}.jar $APP.jar && chmod +x /$APP/scripts/startup.sh
ENV APOLLO_RUN_MODE "Docker"

CMD ["/apollo-portal/scripts/startup.sh"]
构建脚本,循环对三个服务进行分别打包。
#!/bin/bash
set -x 
services_name=(apollo-adminservice apollo-configservice apollo-portal)
# build docker
BUILD_PATH=$(
    cd $(dirname $0)
    pwd
)

for i in ${services_name[@]};do
REGISTRY=7014253
VERSION=1.0
image_name="$REGISTRY/services/$i:$VERSION"
cd $BUILD_PATH/$i/
cp $BUILD_PATH/$GIT_APP/$i/target/*.zip .

# 修改基础镜像版本号
# 要求所有的基础镜像版本依赖必须放到第一行
if [ ! x"$BASE_VERSION" == x ]; then
    sed -i "1s/1.0/$BASE_VERSION/" $BUILD_PATH/$i/Dockerfile
fi
echo "[INFO] Starting buiild $i"
has_exists=$(docker images | awk -F " " '{print $1":"$2" "$3}' | grep $image_name | wc -l)

#先删除已经存在的镜像
if [ $has_exists -gt 0  ]; then
        docker rmi $image_name
fi

# 上传到docker仓库
docker push $image_name
done

Docker-compose.yml
version: '3.8'
x-apollo-common:
  &apollo-common
  extra_hosts:
    - "mysql.com:127.0.0.1"
  environment:
    TZ: 'Asia/Shanghai'
services:
  apollo-adminservice:
    <<: *apollo-common
    image: 7014253/services/apollo-adminservice:1.0
    hostname: apollo-adminservice
    container_name: apollo-adminservice
    network_mode: host
    healthcheck:
      test: "ps axu | grep -v 'grep' | grep 'apollo-adminservice'"
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    env_file:
      - apollo-adminservice.env
    deploy:
      resources:
        limits:
          memory: 1G
    restart: unless-stopped
  apollo-configservice:
    <<: *apollo-common
    image: 7014253/services/apollo-configservice:1.0
    hostname: apollo-configservice
    container_name: apollo-configservice
    network_mode: host
    healthcheck:
      test: "ps axu | grep -v 'grep' | grep 'apollo-configservice'"
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    env_file:
      - apollo-configservice.env
    deploy:
      resources:
        limits:
          memory: 1G
    restart: unless-stopped
  apollo-portal:
    <<: *apollo-common
    image: 7014253/services/apollo-portal:1.0
    hostname: apollo-portal
    container_name: apollo-portal
    network_mode: host
    healthcheck:
      test: "ps axu | grep -v 'grep' | grep 'apollo-portal'"
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    env_file:
      - apollo-portal.env
    deploy:
      resources:
        limits:
          memory: 1G
    restart: unless-stopped
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号