使用 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 calledMaxClients
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
- Overrides the default URL for downloading Composer of https://getcomposer.org/installer. Useful in disconnected environments.
- COMPOSER_ARGS
- Adds extra arguments to the
composer install
command line (for example--no-dev
).
- Adds extra arguments to the
代码目录配置
当以下文件在代码目录中时,会被使用:
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 项目的多样性,建议进行定制