使用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 ...产卵新的容器。