Docker: Decoupled nginx and fpm builds
This commit is contained in:
parent
b9cb7d57fd
commit
4f60daa295
|
@ -30,15 +30,23 @@ stages:
|
||||||
build-image.nginx:
|
build-image.nginx:
|
||||||
<<: *docker_definition
|
<<: *docker_definition
|
||||||
stage: build-frontend
|
stage: build-frontend
|
||||||
|
artifacts:
|
||||||
|
name: "${CI_JOB_NAME}_${CI_JOB_ID}_assets"
|
||||||
|
expire_in: 1 day
|
||||||
|
paths:
|
||||||
|
- ./public/assets
|
||||||
script:
|
script:
|
||||||
- docker build --pull -t "${TEST_IMAGE}-nginx" -f contrib/nginx/Dockerfile .
|
- docker build --pull -t "${TEST_IMAGE}-nginx" -f contrib/nginx/Dockerfile .
|
||||||
- docker push "${TEST_IMAGE}-nginx"
|
- docker push "${TEST_IMAGE}-nginx"
|
||||||
|
- instance=$(docker create "${TEST_IMAGE}-nginx")
|
||||||
|
- docker cp "${instance}:/var/www/public/assets" public/
|
||||||
|
- docker rm "${instance}"
|
||||||
|
|
||||||
build-image:
|
build-image:
|
||||||
<<: *docker_definition
|
<<: *docker_definition
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- docker build --pull --build-arg NGINX_IMAGE="${TEST_IMAGE}-nginx" -t "${TEST_IMAGE}" -f contrib/Dockerfile .
|
- docker build --pull -t "${TEST_IMAGE}" -f contrib/Dockerfile .
|
||||||
- docker push "${TEST_IMAGE}"
|
- docker push "${TEST_IMAGE}"
|
||||||
|
|
||||||
test:
|
test:
|
||||||
|
@ -112,6 +120,7 @@ build-release-file:
|
||||||
- ./release/
|
- ./release/
|
||||||
script:
|
script:
|
||||||
- rsync -vAax "${DOCROOT}" release/
|
- rsync -vAax "${DOCROOT}" release/
|
||||||
|
- rsync -vAax public/assets release/public/
|
||||||
|
|
||||||
deploy-staging:
|
deploy-staging:
|
||||||
<<: *deploy_definition
|
<<: *deploy_definition
|
||||||
|
|
|
@ -99,7 +99,7 @@ vendor/bin/phpunit
|
||||||
|
|
||||||
### CI & Build Pipeline
|
### CI & Build Pipeline
|
||||||
The engelsystem can be tested and automatically deployed to a testing/staging/production environment.
|
The engelsystem can be tested and automatically deployed to a testing/staging/production environment.
|
||||||
This functionality requires a [GitLab](https://about.gitlab.com/) server with a running docker minion.
|
This functionality requires a [GitLab](https://about.gitlab.com/) server with a working docker runner.
|
||||||
|
|
||||||
To use the deployment features the following secret variables need to be defined (if undefined the step will be skipped):
|
To use the deployment features the following secret variables need to be defined (if undefined the step will be skipped):
|
||||||
```bash
|
```bash
|
||||||
|
|
|
@ -1,15 +1,9 @@
|
||||||
# Setup
|
|
||||||
ARG NGINX_IMAGE=engelsystem-nginx:latest
|
|
||||||
|
|
||||||
# composer install
|
# composer install
|
||||||
FROM composer AS composer
|
FROM composer AS composer
|
||||||
COPY ./ /app/
|
COPY ./ /app/
|
||||||
RUN composer --no-ansi install --no-dev --ignore-platform-reqs
|
RUN composer --no-ansi install --no-dev --ignore-platform-reqs
|
||||||
RUN composer --no-ansi dump-autoload --optimize
|
RUN composer --no-ansi dump-autoload --optimize
|
||||||
|
|
||||||
# Use frontend container for assets
|
|
||||||
FROM ${NGINX_IMAGE} AS frontend
|
|
||||||
|
|
||||||
# Intermediate container for less layers
|
# Intermediate container for less layers
|
||||||
FROM alpine as data
|
FROM alpine as data
|
||||||
COPY bin/ /app/bin
|
COPY bin/ /app/bin
|
||||||
|
@ -18,7 +12,6 @@ COPY db/ /app/db
|
||||||
COPY import/ /app/import
|
COPY import/ /app/import
|
||||||
COPY includes/ /app/includes
|
COPY includes/ /app/includes
|
||||||
COPY public/ /app/public
|
COPY public/ /app/public
|
||||||
COPY --from=frontend /var/www/public/assets/ /app/public/assets
|
|
||||||
COPY resources/lang /app/resources/lang
|
COPY resources/lang /app/resources/lang
|
||||||
COPY resources/views /app/resources/views
|
COPY resources/views /app/resources/views
|
||||||
COPY src/ /app/src
|
COPY src/ /app/src
|
||||||
|
|
Loading…
Reference in New Issue