环境:OSE 3.0.1
OpenShift 3 使用 s2i 工具把源代码 build 成 image。
在构建过程中,如果想要加入自己的一些操作怎么办?
s2i 允许你添加一些脚本,脚本可以使用任何语言编写,只要在 builder image 中可以执行。
脚本默认位置在源代码根目录下的 .sti/bin 目录下。也可以由 --scipts-url 参数指定。
脚本一共有 5 个:
(1)assemble 编译源代码,并放到适当的目录。必选。
(2)run 执行应用。必选。
(3)save-artifacts 收集所有依赖包,加速构建过程。可选。
(4)usegage 使用说明。 可选。
(5)test/run 测试 image 是否工作正常。 可选。
下面定制一个 php 的 build 过程。
[student@workstation ~]$ git clone http://workstation.pod0.example.com/php-custom
[student@workstation php-custom]$ cd php-custom
[student@workstation php-custom]$ mkdir -p .sti/bin
[student@workstation php-custom]$ cp assemble .sti/bin
修改 assemble,修改后的完整内容如下:
#!/bin/bash
set -e
echo "---> Installing application source..."
cp -Rf /tmp/src/. ./
#add code here
DATE=`date`
echo "---> Creating the built html file"
echo "Built date: $DATE" > ./built.html
if [ -f composer.json ]; then
echo "Found 'composer.json', installing dependencies using composer.phar... "
# Install Composer
php -r "readfile('https://getcomposer.org/installer');" | php
# Install App dependencies using Composer
./composer.phar install --no-interaction --no-ansi --no-scripts --optimize-autoloader
if [ ! -f composer.lock ]; then
echo -e "\nConsider adding a 'composer.lock' file into your source repository.\n"
fi
fi
[student@workstation php-custom]$ git add .
[student@workstation php-custom]$ git commit -m "Added custom assemble process"
[student@workstation php-custom]$ git push
[student@workstation php-custom]$ cd
[student@workstation ~]$ oc login -u developer -p openshift
[student@workstation ~]$ oc new-project php-custom
[student@workstation ~]$ oc new-app http://workstation.pod0.example.com/php-custom
[student@workstation ~]$ oc build-logs php-custom-1
......
I1218 23:37:53.795201 1 docker.go:400] Attaching to container
I1218 23:37:53.798921 1 docker.go:457] Starting container
I1218 23:37:54.002178 1 docker.go:467] Waiting for container
I1218 23:37:54.052017 1 sti.go:393] ---> Installing application source...
I1218 23:37:54.062962 1 sti.go:393] ---> Creating the built html file
I1218 23:37:54.327394 1 docker.go:473] Container exited
I1218 23:37:54.327414 1 docker.go:479] Invoking postExecution function
I1218 23:37:54.327433 1 sti.go:220] No .sti/environment provided (no environment file found in application sources)
......
可以看到打出了 ---> Creating the built html file 这一行内容。
OpenShift 3 使用 s2i 工具把源代码 build 成 image。
在构建过程中,如果想要加入自己的一些操作怎么办?
s2i 允许你添加一些脚本,脚本可以使用任何语言编写,只要在 builder image 中可以执行。
脚本默认位置在源代码根目录下的 .sti/bin 目录下。也可以由 --scipts-url 参数指定。
脚本一共有 5 个:
(1)assemble 编译源代码,并放到适当的目录。必选。
(2)run 执行应用。必选。
(3)save-artifacts 收集所有依赖包,加速构建过程。可选。
(4)usegage 使用说明。 可选。
(5)test/run 测试 image 是否工作正常。 可选。
下面定制一个 php 的 build 过程。
[student@workstation ~]$ git clone http://workstation.pod0.example.com/php-custom
[student@workstation php-custom]$ cd php-custom
[student@workstation php-custom]$ mkdir -p .sti/bin
[student@workstation php-custom]$ cp assemble .sti/bin
修改 assemble,修改后的完整内容如下:
#!/bin/bash
set -e
echo "---> Installing application source..."
cp -Rf /tmp/src/. ./
#add code here
DATE=`date`
echo "---> Creating the built html file"
echo "Built date: $DATE" > ./built.html
if [ -f composer.json ]; then
echo "Found 'composer.json', installing dependencies using composer.phar... "
# Install Composer
php -r "readfile('https://getcomposer.org/installer');" | php
# Install App dependencies using Composer
./composer.phar install --no-interaction --no-ansi --no-scripts --optimize-autoloader
if [ ! -f composer.lock ]; then
echo -e "\nConsider adding a 'composer.lock' file into your source repository.\n"
fi
fi
[student@workstation php-custom]$ git add .
[student@workstation php-custom]$ git commit -m "Added custom assemble process"
[student@workstation php-custom]$ git push
[student@workstation php-custom]$ cd
[student@workstation ~]$ oc login -u developer -p openshift
[student@workstation ~]$ oc new-project php-custom
[student@workstation ~]$ oc new-app http://workstation.pod0.example.com/php-custom
[student@workstation ~]$ oc build-logs php-custom-1
......
I1218 23:37:53.795201 1 docker.go:400] Attaching to container
I1218 23:37:53.798921 1 docker.go:457] Starting container
I1218 23:37:54.002178 1 docker.go:467] Waiting for container
I1218 23:37:54.052017 1 sti.go:393] ---> Installing application source...
I1218 23:37:54.062962 1 sti.go:393] ---> Creating the built html file
I1218 23:37:54.327394 1 docker.go:473] Container exited
I1218 23:37:54.327414 1 docker.go:479] Invoking postExecution function
I1218 23:37:54.327433 1 sti.go:220] No .sti/environment provided (no environment file found in application sources)
......
可以看到打出了 ---> Creating the built html file 这一行内容。
没有评论:
发表评论