使用gitlab-ci和gitlab-runner的Docker端口绑定
我在configuration我的gitlab-ci和gitlab-runner时发现了一个问题。
我想在一台服务器上有几个独立的应用程序环境,运行在其他外部端口上,但是使用相同的Docker镜像。
我想实现的
- 在容器中的端口
80
运行Apache的deploy-dev
,但在外部端口81
-
deploy-rc
在容器中的端口80
运行Apache,但在外部端口82
我已经看到docker run
有--publish
参数,它允许端口绑定,如80:81
,但不幸的是我找不到在gitlab-ci.yml
或gitlab-runner的config.toml
设置该参数的任何选项。
有什么办法可以在gitlab-runner运行的Docker中实现端口绑定?
我的gitlab-ci.yml
:
before_script: # Install dependencies - bash ci/docker_install.sh > /dev/null deploy: image: webdevops/php-apache:centos-7-php56 stage: deploy only: - dockertest script: - composer self-update - export SYMFONY_ENV=dev - composer install - app/console doc:sch:up --force - app/console doc:fix:load -e=dev -n - app/console ass:install - app/console ass:dump -e=dev tags: - php
您混淆了两个概念:持续集成任务和docker部署。
你所configuration的是一个持续的整合任务。 这个想法是,这些执行构build步骤和完成。 Gitlab-ci将logging每个构build步骤的结果并将其呈现给您。 这些可以是自己的docker工作,虽然他们不一定是。
你想要做的是部署到docker。 也就是说,你要开始一个包含你的程序的docker工作。 通过这个可能超出了堆栈溢出答案的范围,但我会尽我所能来概述你需要做什么。
首先把你已经有一个脚本,并把它变成一个docker文件。 您的dockerfile将需要添加您的仓库中的所有代码,然后执行您列出的作曲者/控制台脚本。 使用docker docker build
来将这个dockerfile变成一个docker镜像。
接下来(可选),您可以将Docker镜像上传到存储库。
最后一步是执行一个docker run
命令来加载你的镜像并运行它。
这听起来很复杂,但事实并非如此。 我有一个cipipe道,这样做。 一步一步运行: docker build ...
由docker push ...
docker build ...
forllowed和下一步运行docker run ...
产卵新的容器。