我有低于docker-compose.yml的
version: "2"
services:
api:
build:
context: .
dockerfile: ./build/dev/Dockerfile
container_name: "project-api"
volumes:
# 1. mount your workdir path
- .:/app
depends_on:
- mongodb
links:
- mongodb
- mysql
nginx:
image: nginx:1.10.3
container_name: "project-nginx"
ports:
- 80:80
restart: always
volumes:
- ./build/dev/nginx.conf:/etc/nginx/conf.d/default.conf
- .:/app
links:
- api
depends_on:
- api
mongodb:
container_name: "project-mongodb"
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
ports:
- "27018:27017"
command: mongod --smallfiles --logpath=/dev/null # --quiet
mysql:
container_name: "gamestore-mysql"
image: mysql:5.7.23
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: project_test
MYSQL_USER: user
MYSQL_PASSWORD: user
MYSQL_ROOT_PASSWORD: root及以下的.gitlab-ci.yml
test:
stage: test
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
before_script:
- apk add --no-cache py-pip
- pip install docker-compose
script:
- docker-compose up -d
- docker-compose exec -T api ls -la
- docker-compose exec -T api composer install
- docker-compose exec -T api php core/init --env=Development --overwrite=y
- docker-compose exec -T api vendor/bin/codecept -c core/common run
- docker-compose exec -T api vendor/bin/codecept -c core/rest run当我运行我的gitlab管道时,它变成了字段,因为我认为gitlab无法处理由运行的服务。
错误说mysql拒绝连接。
我需要这种连接,因为我的测试是由共同欺骗编写的,它将测试我的模型和api操作。
我希望每次都要测试我的分支,每次都要测试它们,如果只是在开发、部署到测试服务器和在生产服务器上的主部署中通过它们的话。
在gitlab ci/cd中运行我的测试并在我的服务器上部署它们的最佳方法是什么?
发布于 2018-12-07 17:27:06
你应该使用GitLab CI服务,而不是坞式写作。
您必须选择一个映像作为主要内容,在其中运行命令,并选择其他容器作为服务。
遗憾的是,CI服务不能在gitlab中挂载文件,您必须能够用env变量配置它们,或者您需要在其中创建自己的映像(您可以在CI阶段完成)
我建议您不要使用nginx,使用内置php服务器进行测试。这是不可能的(您有spicifix配置),您需要在其中使用复制的文件构建自己的nginx映像。
另外,对于PHP (我假设是docker-compose.yaml中的api服务),您需要要么构建映像,要么将命令从dockerfile复制到script。
所以结果应该是:
test:
stage: test
image: custom-php-image #build from ./build/dev/Dockerfile
services:
- name: mysql:5.7.23
alias: gamestore-mysql
- name: mongo:latest
alias: project-mongodb
command: mongod --smallfiles --logpath=/dev/null
variables:
MYSQL_DATABASE: project_test
MYSQL_USER: user
MYSQL_PASSWORD: user
MYSQL_ROOT_PASSWORD: root
MONGO_DATA_DIR: /data/db
MONGO_LOG_DIR: /dev/null
script:
- api ls -la
- composer install
- php core/init --env=Development --overwrite=y
- php -S localhost:8000 # You need to configure your built-in php server probably here
- vendor/bin/codecept -c core/common run
- vendor/bin/codecept -c core/rest run我不知道你的应用程序,所以你可能需要做一些调整。
关于这一点的更多内容:
https://stackoverflow.com/questions/53669615
复制相似问题