第一部分解决。
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