首页 > 其他分享 >Mendix 构建Docker镜像

Mendix 构建Docker镜像

时间:2024-03-26 14:45:46浏览次数:24  
标签:opt buildpack -- mendix && Mendix 镜像 Docker docker

  

1、使用最新版Mendix Docker Buildpack

   https://github.com/mendix/docker-mendix-buildpack/tree/latest 

2、克隆最新版Buildpack,修改<TAG>

  这里会产生一个docker-mendix-buildpack文件夹,以后所有的工作都在这个文件夹下进行

  git clone --branch <TAG> --config core.autocrlf=false https://github.com/mendix/docker-mendix-buildpack

 3、安装Docker 

  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  yum install -y docker-ce
  service docker start
  systemctl enable docker.service

4、创建基础镜像

  docker build -t mendix-rootfs:app -f rootfs-app.dockerfile .  
    docker build -t mendix-rootfs:builder -f rootfs-builder.dockerfile .

  4.1、rootfs-builder.dockerfile这个基础镜像需要特殊处理,在安装mono依赖的时候经常超时,所以需要下载依赖,手动安装

  4.2、安装一个registry.access.redhat.com/ubi8/ubi-minimal:latest镜像,运行容器后,在容器里运行下面命令,下载所有依赖

    最容易在这里失败,Mono这个站点下载依赖巨慢,导致超时,或者安装不完全导致错误。https://download.mono-project.com/repo/centos8-stable/。找一个网络环境好的机器把依赖下载下来。

yum install mono-core-5.20.1.34 --downloadonly --downloaddir=/opt/mendix/mono/

  4.3、在docker-mendix-buildpack下创建一个depen,把下载好的依赖放到depen中

  4.4、修改rootfs-builder.dockerfile为下面

# Dockerfile to create a Mendix Docker image based on either the source code or
# Mendix Deployment Archive (aka mda file)
FROM --platform=linux/amd64 registry.access.redhat.com/ubi8/ubi-minimal:latest
#This version does a full build originating from the Ubuntu Docker images
LABEL Author="Mendix Digital Ecosystems"
LABEL maintainer="[email protected]"
# Set the locale
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
# CF buildpack version
ARG CF_BUILDPACK=v5.0.16
# CF buildpack download URL
ARG CF_BUILDPACK_URL=https://kkgithub.com/mendix/cf-mendix-buildpack/releases/download/${CF_BUILDPACK}/cf-mendix-buildpack.zip
# Set the user ID
ARG USER_UID=1001
ENV USER_UID=${USER_UID}
# Allow specification of debugging options
ARG BUILDPACK_XTRACE
# Add mono repo
COPY --chown=0:0 scripts/mono/xamarin.gpg /etc/pki/rpm-gpg/RPM-GPG-KEY-mono-centos8-stable
COPY --chown=0:0 scripts/mono/mono-centos8-stable.repo /etc/yum.repos.d/mono-centos8-stable.repo
#修改的地方1: Copy denpendencies
COPY --chown=0:0 /depen /opt/depen/ 
# install dependencies & remove package lists
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm && \
    sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* && \
    sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* && \   
    microdnf update -y && \
    microdnf module enable nginx:1.20 -y && \
    microdnf install -y wget curl glibc-langpack-en python311 openssl tar gzip unzip libpq nginx nginx-mod-stream binutils fontconfig findutils binutils && \
    microdnf clean all && rm -rf /var/cache/yum
 
#修改的地方2: install dependencies
RUN rpm -ivh --nodeps --force /opt/depen/*
 
#修改的地方3:去掉mono-core-5.20.1.34 libgdiplus0两个依赖,上面手动安装了
RUN microdnf install -y java-11-openjdk-headless java-11-openjdk-devel tzdata-java  libicu && \
    microdnf clean all && rm -rf /var/cache/yum
# Set nginx permissions
RUN touch /run/nginx.pid && \
    chown -R 1001:0 /var/log/nginx /var/lib/nginx /run/nginx.pid &&\
    chmod -R g=u /var/log/nginx /var/lib/nginx /run/nginx.pid
# Pretend to be Ubuntu to bypass CF Buildpack's check
RUN rm /etc/*-release && printf 'NAME="Ubuntu"\nID=ubuntu\nVersion="22.04 LTS (Jammy Jellyfish)"\nVERSION_CODENAME=jammy\n' > /etc/os-release
# Set python alias to python3 (required for Datadog)
RUN alternatives --set python /usr/bin/python3
# Download and prepare CF Buildpack
# Switch CF Buildpack to use Python 3.10+ compatibility
ENV CF_STACK cflinuxfs4
# Each comment corresponds to the script line:
# 1. Create all directories needed by scripts
# 2. Download CF buildpack
# 3. Extract CF buildpack
# 4. Delete CF buildpack zip archive
# 5. Update ownership of /opt/mendix so that the app can run as a non-root user
# 6. Update permissions of /opt/mendix so that the app can run as a non-root user
RUN mkdir -p /opt/mendix/buildpack /opt/mendix/build &&\
    ln -s /root /home/vcap &&\
    echo "Downloading CF Buildpack from ${CF_BUILDPACK_URL}" &&\
    curl -fsSL ${CF_BUILDPACK_URL} -o /tmp/cf-mendix-buildpack.zip && \
    python3 -m zipfile -e /tmp/cf-mendix-buildpack.zip /opt/mendix/buildpack/ &&\
    rm /tmp/cf-mendix-buildpack.zip &&\
    chown -R ${USER_UID}:0 /opt/mendix &&\
    chmod -R g=u /opt/mendix
# Copy python scripts which execute the buildpack (exporting the VCAP variables)
COPY scripts/compilation.py scripts/git scripts/mono-adapter /opt/mendix/buildpack/
# Install the buildpack Python dependencies
RUN PYTHON_BUILD_RPMS="python3.11-pip python3.11-devel libffi-devel gcc" && \
    microdnf install -y $PYTHON_BUILD_RPMS && \
    rm /opt/mendix/buildpack/vendor/wheels/* && \
    chmod +rx /opt/mendix/buildpack/bin/bootstrap-python && /opt/mendix/buildpack/bin/bootstrap-python /opt/mendix/buildpack /tmp/buildcache && \
    microdnf remove -y $PYTHON_BUILD_RPMS && microdnf clean all && rm -rf /var/cache/yum
# Add the buildpack modules
ENV PYTHONPATH "$PYTHONPATH:/opt/mendix/buildpack/lib/:/opt/mendix/buildpack/:/opt/mendix/buildpack/lib/python3.11/site-packages/"

  

5、在docker-mendix-buildpack下创建project文件夹,把Mendix应用目录下文件拷贝到这个文件夹下 

6、运行docker命令创建Mendix应用镜像

docker build --tag mendix/mendix-buildpack:v1.2 .

7、创建一个postgres数据库镜像

docker run -id --name=postgresql   -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e LANG=C.UTF-8 postgres

8、运行mendix应用镜像,注意ADMIN_PASSWORD参数,必须符合密码策略

docker run -it --link=postgresql  -e ADMIN_PASSWORD=Pass123@word -e DATABASE_ENDPOINT=postgres://postgres:123456@postgresql:5432/mendix mendix/mendix-buildpack:v1.2  

 

到这里基本Mendix应用就可以运行了。 

 

标签:opt,buildpack,--,mendix,&&,Mendix,镜像,Docker,docker
From: https://www.cnblogs.com/qiumc/p/18096633

相关文章

  • 宝塔面板安装docker问题
    宝塔面板安装问题问题背景腾讯云轻量应用服务器构建宝塔面板版本7.9通过服务器终端安装docker及docker-compose,服务正常启动了,但是宝塔面板页面提示:“当前未安装docker或docker-compose”解决方式服务器终端执行如下命令Compose_Download_Url="http://download.bt.cn/install/s......
  • 从零开始写 Docker(九)---实现 mydocker ps 查看运行中的容器
    本文为从零开始写Docker系列第九篇,实现类似dockerps的功能,使得我们能够查询到后台运行中的所有容器。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgroups......
  • java打包docker镜像
    参考:https://blog.csdn.net/liuxianwen1990/article/details/136256490 1,把jar包复制/opt/test,cd到这个目录下 2,创建Dockerfile文件,jdk8版本vimDockerfileFROMopenjdk:8-jre-alpineCOPYdemo-0.0.1-SNAPSHOT.jardemo-0.0.1-SNAPSHOT.jarCMD["java","-jar&q......
  • Docker下/var/lib/docker/overlay2清理
     查询镜像(Images)、容器(Containers)和本地卷(LocalVolumes)等空间使用大户的空间占用情况dockersystemdf#详细信息dockersystemdf-v清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)dockersystemprune#命令清理得更加彻底,可以将没......
  • macOS Ventura 13.6.6 (22G630) Boot ISO 原版可引导镜像下载
    macOSVentura13.6.6(22G630)BootISO原版可引导镜像下载3月26日凌晨,macOSSonoma14.4.1发布,同时带来了macOSVentru13.6.6安全更新。macOSVentura13.6及更新版本,如无特殊说明皆为安全更新,不再赘述。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)......
  • macOS Sonoma 14.4.1 (23E224) 正式版 Boot ISO 原版可引导镜像下载
    macOSSonoma14.4.1(23E224)正式版BootISO原版可引导镜像下载2024年3月26日凌晨,macOSSonoma14.4.1更新修复了一个可能导致连接到外部显示器的USB集线器无法被识别的问题。它还解决了可能导致Java应用程序意外退出的问题,并修复了可能导致专业音乐应用程序的音频......
  • docker-运行redis服务
    环境说明linux系统版本:lsb_release-a  docker版本:docker-v  不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。 查看docker中mysql的版本,可以去官网,需要kx上网才能打开。https://hub.docker.com/  最好是确认自己的服务器已经......
  • docker 和 conda 安装
    DockerRocky9dnfinstalldockerUbuntu20.04curl-fsSLhttps://get.docker.com-oget-docker.shsudoshget-docker.shsudousermod-aGdocker<username>sudoservicedockerstart重启dockerversiondockerinfodockerpull<name> 从dockerhub拉取镜像docke......
  • 别让 Docker 毁了你的 MySQL!
    Docker容器技术的火热,越来越多的应用开始被"装箱"。我们这些开发者享受着Docker带来的便捷和灵活,几乎恨不得把所有东西都塞进容器里。于是,连MySQL这样的有状态服务,也开始频频出现在Docker的舞台上。但是,把MySQL装进Docker,真的是个明智的选择吗?是否会给系统稳......
  • docker安装部署zabbix
    原文出处:https://blog.csdn.net/bjywxc/article/details/103308052 zabbix由2部分构成,zabbixserver与可选组件zabbixagent,要想搭建一个Zabbix的工作环境,主要有三个方面(界面、服务器和数据库)可以安装在同一台服务器上,也可以不在同一个服务器。本次使用Docker 开源的应用容器......