使用 s2i Build镜像

Gao

使用 s2i Build 镜像

安装s2i

  • 使用 go get
$ go get github.com/openshift/source-to-image/cmd/s2i
  • macOS 使用
$ brew install source-to-image
  • Linux 使用

版本发布页面找到对应 链接下载

curl -sSL https://github.com/openshift/source-to-image/releases/download/v1.1.14/source-to-image-v1.1.14-874754de-linux-amd64.tar.gz | tar zxf - -C /usr/local/bin/ './s2i'
  • Windows 使用

版本发布页面找到对应 链接下载

下载

https://github.com/openshift/source-to-image/releases/download/v1.1.14/source-to-image-v1.1.14-874754de-windows-amd64.zip
  • 源码编译
$ go get github.com/openshift/source-to-image $ cd ${GOPATH}/src/github.com/openshift/source-to-image $ export PATH=$PATH:${GOPATH}/src/github.com/openshift/source-to-image/_output/local/bin/linux/amd64/ $ hack/build-go.sh

使用s2i

使用方式为:

s2i [source dir] [builder image] [built image name]

可用的 builder 镜像源码可以在 Software Collection 找到

创建镜像 PHP 项目镜像

PHP builder 镜像

  • centos/php-72-centos7
  • centos/php-71-centos7
  • centos/php-70-centos7
  • centos/php-56-centos7
  • centos/php-55-centos7

创建 test-app 镜像

s2i build /root/s2i-php-test-app centos/php-72-centos7 my-test-app

docker run --rm -p 8080:8080 my-test-app

配置运行时参数

给镜像配置以下环境变量可以作用于php.ini:
  • ERROR_REPORTING
    • Informs PHP of which errors, warnings and notices you would like it to take action for
    • Default: E_ALL & ~E_NOTICE
  • DISPLAY_ERRORS
    • Controls whether or not and where PHP will output errors, notices and warnings
    • Default: ON
  • DISPLAY_STARTUP_ERRORS
    • Cause display errors which occur during PHP's startup sequence to be handled separately from display errors
    • Default: OFF
  • TRACK_ERRORS
    • Store the last error/warning message in $php_errormsg (boolean)
    • Default: OFF
  • HTML_ERRORS
    • Link errors to documentation related to the error
    • Default: ON
  • INCLUDE_PATH
    • Path for PHP source files
    • Default: .:/opt/app-root/src:/opt/rh/rh-php72/root/usr/share/pear (EL7)
    • Default: .:/opt/app-root/src:/usr/share/pear (EL8, Fedora)
  • PHP_MEMORY_LIMIT
    • Memory Limit
    • Default: 128M
  • SESSION_NAME
    • Name of the session
    • Default: PHPSESSID
  • SESSION_HANDLER
    • Method for saving sessions
    • Default: files
  • SESSION_PATH
    • Location for session data files
    • Default: /tmp/sessions
  • SESSION_COOKIE_DOMAIN
    • The domain for which the cookie is valid.
    • Default:
  • SESSION_COOKIE_HTTPONLY
    • Whether or not to add the httpOnly flag to the cookie
    • Default: 0
  • SESSION_COOKIE_SECURE
    • Specifies whether cookies should only be sent over secure connections.
    • Default: Off
  • SHORT_OPEN_TAG
    • Determines whether or not PHP will recognize code between <? and ?> tags
    • Default: OFF
  • DOCUMENTROOT
    • Path that defines the DocumentRoot for your application (ie. /public)
    • Default: /
给镜像配置以下环境变量可以作用于opcache.ini:
  • OPCACHE_MEMORY_CONSUMPTION
    • The OPcache shared memory storage size in megabytes
    • Default: 128
  • OPCACHE_REVALIDATE_FREQ
    • How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.
    • Default: 2
以下配置环境变量作用于 Apache 服务,运行于 Apache MPM prefork 模式:
  • HTTPD_START_SERVERS
    • The StartServers directive sets the number of child server processes created on startup.
    • Default: 8
  • HTTPD_MAX_REQUEST_WORKERS
    • The MaxRequestWorkers directive sets the limit on the number of simultaneous requests that will be served.
    • MaxRequestWorkers was called MaxClients before version httpd 2.3.13.
    • Default: 256 (this is automatically tuned by setting Cgroup limits for the container using this formula: TOTAL_MEMORY / 15MB. The 15MB is average size of a single httpd process.
以下配置环境变量作用于 composer:
  • COMPOSER_MIRROR
    • Adds a custom composer repository mirror URL to composer configuration. Note: This only affects packages listed in composer.json.
  • COMPOSER_INSTALLER
  • COMPOSER_ARGS
    • Adds extra arguments to the composer install command line (for example --no-dev).

代码目录配置

当以下文件在代码目录中时,会被使用:

  • composer.json

    List of dependencies to be installed with composer. The format is documented here.

  • .htaccess

    In case the DocumentRoot of the application is nested within the source directory /opt/app-root/src, users can provide their own Apache .htaccess file. This allows the overriding of Apache's behavior and specifies how application requests should be handled. The .htaccess file needs to be located at the root of the application source.

  • .s2i/environment

    也可以用于配置环境变量

创建 nodejs 项目镜像

可用 builder 镜像

  • centos/nodejs-10-centos7
  • centos/nodejs-8-centos7
  • centos/nodejs-6-centos7

服务启动

默认会调用 npm start 来启动服务

DEV_MODE=true时,默认会调用nodemon <main attribute in package.json>,来启动 服务,如果失败再调用,npm start 来启动服务

可配置环境变量

NODE_ENV NodeJS runtime mode (default: "production")

DEV_MODE When set to "true", nodemon will be used to automatically reload the server while you work (default: "false"). Setting DEV_MODE to "true" will change the NODE_ENV default to "development" (if not explicitly set).

NPM_RUN Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run "start"). These user-defined run-scripts are unavailable while DEV_MODE is in use.

HTTP_PROXY Use an npm proxy during assembly

HTTPS_PROXY Use an npm proxy during assembly

NPM_MIRROR Use a custom NPM registry mirror to download packages during the build process

创建 go 项目镜像

可用 builder 镜像

  • centos/go-toolset-7-centos7

配置运行时参数

  • IMPORT_URL

指定应用的导入 URL,如 github.com/someorg/somerepo

  • INSTALL_URL

如果main.go不在代码目录下时,指定 build 目录,如 github.com/someorg/somerepo/somefolder

创建 java 项目镜像

由于 java 项目的多样性,建议进行定制