Skip to content

Commit

Permalink
Merge pull request #1050 from VWS-Python/multi-platform
Browse files Browse the repository at this point in the history
Support multiple platforms for Docker
  • Loading branch information
adamtheturtle committed Dec 26, 2021
2 parents 40c0a92 + 58a2ca3 commit 72fe3ba
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 55 deletions.
19 changes: 3 additions & 16 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,26 +26,11 @@ jobs:

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
# This defaults to "docker-containerized".
# We want to share the vws-mock:base image to the building of the
# later builds, without pushing to a registry.
#
# Therefore, we choose not to build in a container.
driver: docker

- name: Build base Docker image
uses: docker/build-push-action@v2.7.0
with:
buildkitd-flags: --debug
file: src/mock_vws/_flask_server/dockerfiles/base/Dockerfile
push: false
tags: |
vws-mock:base

- name: Build target manager Docker image
uses: docker/build-push-action@v2.7.0
with:
platforms: linux/amd64,linux/arm64
file: src/mock_vws/_flask_server/dockerfiles/target_manager/Dockerfile
push: false
tags: |
Expand All @@ -54,6 +39,7 @@ jobs:
- name: Build VWS Docker image
uses: docker/build-push-action@v2.7.0
with:
platforms: linux/amd64,linux/arm64
file: src/mock_vws/_flask_server/dockerfiles/vws/Dockerfile
push: false
tags: |
Expand All @@ -62,6 +48,7 @@ jobs:
- name: Build VWQ Docker image
uses: docker/build-push-action@v2.7.0
with:
platforms: linux/amd64,linux/arm64
file: src/mock_vws/_flask_server/dockerfiles/vwq/Dockerfile
push: false
tags: |
Expand Down
15 changes: 0 additions & 15 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,21 +83,6 @@ jobs:

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
# This defaults to "docker-containerized".
# We want to share the vws-mock:base image to the building of the
# later builds, without pushing to a registry.
#
# Therefore, we choose not to build in a container.
driver: docker

- name: Build base Docker image
uses: docker/build-push-action@v2.7.0
with:
file: src/mock_vws/_flask_server/dockerfiles/base/Dockerfile
push: false
tags: |
vws-mock:base

- name: Build and push target manager Docker image
uses: docker/build-push-action@v2.7.0
Expand Down
2 changes: 0 additions & 2 deletions docs/source/docker.rst
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,10 @@ Building images from source
export VWS_DOCKERFILE=$DOCKERFILE_DIR/vws/Dockerfile
export VWQ_DOCKERFILE=$DOCKERFILE_DIR/vwq/Dockerfile

export BASE_TAG=vws-mock:base
export TARGET_MANAGER_TAG=adamtheturtle/vuforia-target-manager-mock:latest
export VWS_TAG=adamtheturtle/vuforia-vws-mock:latest
export VWQ_TAG=adamtheturtle/vuforia-vwq-mock:latest

docker buildx build $REPOSITORY_ROOT --file $BASE_DOCKERFILE --tag $BASE_TAG
docker buildx build $REPOSITORY_ROOT --file $TARGET_MANAGER_DOCKERFILE --tag $TARGET_MANAGER_TAG
docker buildx build $REPOSITORY_ROOT --file $VWS_DOCKERFILE --tag $VWS_TAG
docker buildx build $REPOSITORY_ROOT --file $VWQ_DOCKERFILE --tag $VWQ_TAG
9 changes: 0 additions & 9 deletions src/mock_vws/_flask_server/dockerfiles/base/Dockerfile

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
FROM vws-mock:base
FROM python:3.9.1-slim-buster
RUN apt update --yes
# git is needed for setuptools-scm.
RUN apt install --yes git
COPY . /app
WORKDIR /app
RUN pip install .
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["src/mock_vws/_flask_server/target_manager.py"]
10 changes: 9 additions & 1 deletion src/mock_vws/_flask_server/dockerfiles/vwq/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
FROM vws-mock:base
FROM python:3.9.1-slim-buster
RUN apt update --yes
# git is needed for setuptools-scm.
RUN apt install --yes git
COPY . /app
WORKDIR /app
RUN pip install .
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["src/mock_vws/_flask_server/vwq.py"]
10 changes: 9 additions & 1 deletion src/mock_vws/_flask_server/dockerfiles/vws/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
FROM vws-mock:base
FROM python:3.9.1-slim-buster
RUN apt update --yes
# git is needed for setuptools-scm.
RUN apt install --yes git
COPY . /app
WORKDIR /app
RUN pip install .
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["src/mock_vws/_flask_server/vws.py"]
13 changes: 3 additions & 10 deletions tests/mock_vws/test_docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,22 @@ def test_build_and_run(
client = docker.from_env()

dockerfile_dir = repository_root / 'src/mock_vws/_flask_server/dockerfiles'
base_dockerfile = dockerfile_dir / 'base' / 'Dockerfile'
target_manager_dockerfile = (
dockerfile_dir / 'target_manager' / 'Dockerfile'
)
vws_dockerfile = dockerfile_dir / 'vws' / 'Dockerfile'
vwq_dockerfile = dockerfile_dir / 'vwq' / 'Dockerfile'

random = uuid.uuid4().hex
base_tag = 'vws-mock:base'
target_manager_tag = 'vws-mock-target-manager:latest-' + random
vws_tag = 'vws-mock-vws:latest-' + random
vwq_tag = 'vws-mock-vwq:latest-' + random

try:
client.images.build(
target_manager_image, _ = client.images.build(
path=str(repository_root),
dockerfile=str(base_dockerfile),
tag=base_tag,
dockerfile=str(target_manager_dockerfile),
tag=target_manager_tag,
)
except docker.errors.BuildError as exc:
full_log = '\n'.join(
Expand All @@ -87,11 +85,6 @@ def test_build_and_run(
reason = 'We do not currently support using Windows containers.'
pytest.skip(reason)

target_manager_image, _ = client.images.build(
path=str(repository_root),
dockerfile=str(target_manager_dockerfile),
tag=target_manager_tag,
)
vws_image, _ = client.images.build(
path=str(repository_root),
dockerfile=str(vws_dockerfile),
Expand Down

0 comments on commit 72fe3ba

Please sign in to comment.