第一部分解決。
jwilder/nginx-proxy - 完全獲取端口例程。
我上startap運行代理:
docker run -d -p 80:80 -p 443:443 --name "dnginx" -v /root/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro -v /var/log/nginx-proxy/:/var/log/nginx/ jwilder/nginx-proxy
然後運行每個容器是這樣的:
sudo docker run -d --name "nginx-test" --expose 80 --env VIRTUAL_HOST=test.domain.com kitematic/hello-world-nginx
注VIRTUAL_HOST = test.domain.com和--expose 80
- -env VIRTUAL_HOST = test.domain.com 會說nginx-proxy這個子域與容器鏈接
--expose 80 如果您的容器不公開端口本身。這將在碼頭網絡內打開80端口。而nginx-proxy會自動生成新的配置,爲你的子域添加部分。
第二部分解決:
我做了我的碼頭工人在亞軍亞軍gitlab特權config.toml。然後我的亞軍的工作是這樣的:
deploy to review:
image: docker:latest
tags:
- privileged
stage: deploy
script:
- mkdir -p /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project
- cp -r ./* /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- (docker stop $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME && docker rm $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME) || echo "nothing to stop, starting new container"
- docker run -d --env VIRTUAL_HOST="$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE.mydomain.com" --name "$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME" -v /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/project:/home/project -v /home/devenv/$CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME/logs:/var/logs myrepo.com:4567/group/projectimage
- docker exec $CI_PROJECT_NAMESPACE-$CI_PROJECT_NAME-$CI_BUILD_REF_NAME /bin/sh /home/project/build.sh
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_NAME.$CI_PROJECT_NAME.$CI_PROJECT_NAMESPACE.mydomain.com
only:
- branches
except:
- master
哪裏build.sh是NPM +亭子安裝命令和大口的任務。
所以我想kubernetes可能是一個解決方案。但是,在審覈結束並自動刪除審覈環境後,仍然存在關於端口重用的問題。 – MadDocNC
jwilder/nginx-proxy - 完全獲取端口例程。 – MadDocNC