Skip to content

Commit

Permalink
Docker images building procedure
Browse files Browse the repository at this point in the history
This commit simplifies the building of docker images by
relying on a docker-comopse for each type of image.

It is still possible to reduce the build to a single
compose file + a shell script to set the correct
tags and paths. However this is left for future
consideration.

Closes #15 and #26
  • Loading branch information
Pedro Silva committed Jun 18, 2019
1 parent 57f3875 commit 8f293d8
Show file tree
Hide file tree
Showing 12 changed files with 283 additions and 660 deletions.
17 changes: 0 additions & 17 deletions container/build_defaults.env

This file was deleted.

121 changes: 29 additions & 92 deletions container/dev/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,108 +1,45 @@
# Wirepas Oy
FROM wirepas/base:1.1-ubuntu as builder

# Builds wirepas messaging
FROM wirepas/base:1.0-ubuntu as messaging-builder
ENV PACKAGE_PATH=public-apis/wrappers/python
WORKDIR /app_build

COPY ${PACKAGE_PATH}/requirements.txt requirements.txt
RUN pip3 install --no-cache-dir -r requirements.txt

COPY ${PACKAGE_PATH}/ .
RUN ./utils/compile_protos.sh
RUN py3clean . || true \
&& python3 setup.py clean --all \
&& python3 setup.py sdist bdist_wheel

# Builds sink service
FROM wirepas/base:1.0-ubuntu as wm-sink-service-builder
ENV PACKAGE_PATH=sink_service
WORKDIR /app_build
COPY sink_service app_build/sink_service
COPY python_transport app_build/python_transport
COPY container app_build/container

COPY ${PACKAGE_PATH}/ .
RUN make clean && make

# Builds transport service
FROM wirepas/base:1.0-ubuntu as wm-transport-service-builder
ENV PACKAGE_PATH=python_transport
WORKDIR /app_build
RUN cd /app_build/sink_service/ \
&& make clean \
&& make

COPY ${PACKAGE_PATH}/requirements.txt requirements.txt
COPY ${PACKAGE_PATH}/ .
RUN py3clean . || true \
&& python3 setup.py clean --all \
&& python3 setup.py sdist bdist_wheel

RUN pip install Sphinx \
&& pip install sphinxcontrib-napoleon \
&& ./utils/generate_sphinx_docs.sh
RUN ls dist/
RUN cd /app_build/python_transport/ \
&& ./utils/generate_wheel.sh

# builds x86 gateway services
FROM wirepas/base:1.0-ubuntu as wm-lxgw
FROM wirepas/base:1.1-ubuntu as wm-lxgw
USER root

ARG WM_MESSAGING_PKG
ENV WM_MESSAGING_PKG=${WM_MESSAGING_PKG:-"wirepas_messaging-*.tar*"}
ENV SERVICE_HOME="${WM_HOME}"/gateway
ENV SINK_SERVICE="${SERVICE_HOME}"/sink_service
ENV TRANSPORT_SERVICE="${SERVICE_HOME}"/transport_service

ARG WM_TRANSPORT_PKG
ENV WM_TRANSPORT_PKG=${WM_TRANSPORT_PKG:-"wirepas_gateway-*.tar*"}

ENV SERVICE_HOME=${HOME}/gateway
ENV SINK_SERVICE=${SERVICE_HOME}/sink_service
ENV TRANSPORT_SERVICE=${SERVICE_HOME}/transport_service

COPY --from=messaging-builder /app_build/dist/${WM_MESSAGING_PKG} ${HOME}/dependencies/
COPY --from=messaging-builder /app_build/requirements.txt ${HOME}/dependencies/

COPY --from=wm-transport-service-builder /app_build/dist/${WM_TRANSPORT_PKG} ${TRANSPORT_SERVICE}/
COPY --from=wm-transport-service-builder /app_build/requirements.txt ${TRANSPORT_SERVICE}/
COPY --from=wm-transport-service-builder /app_build/docs/ ${TRANSPORT_SERVICE}/docs
ENV WM_TRANSPORT_PKG=${WM_TRANSPORT_PKG:-"${TRANSPORT_SERVICE}/wirepas_gateway-*.tar.gz"}

COPY --from=wm-sink-service-builder /app_build/build/sinkService /usr/local/bin/sinkService
COPY --from=builder /app_build/python_transport/requirements.txt "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/python_transport/dist/* "${TRANSPORT_SERVICE}"/
COPY --from=builder /app_build/python_transport/wirepas_gateway/wirepas_certs/extwirepas.pem /etc/extwirepas.pem
COPY --from=builder /app_build/sink_service/build/sinkService /usr/local/bin/sinkService
COPY --from=builder /app_build/sink_service/com.wirepas.sink.conf /etc/dbus-1/system.d/

WORKDIR ${HOME}
RUN pip3 install --no-cache-dir -r ${HOME}/dependencies/requirements.txt
RUN pip3 install --no-cache-dir -r ${TRANSPORT_SERVICE}/requirements.txt
RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir -r "${TRANSPORT_SERVICE}"/requirements.txt
RUN pip3 install --no-cache-dir ${WM_TRANSPORT_PKG}
COPY --from=builder /app_build/container/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
COPY --from=builder /app_build/container/transport.template "${TRANSPORT_SERVICE}/transport.template"
RUN rm -rf "${WM_HOME}"/.cache && chown "${WM_USER}":"${WM_USER}" -R "${WM_HOME}"

RUN pip3 install --no-cache-dir ${HOME}/dependencies/${WM_MESSAGING_PKG}
RUN pip3 install --no-cache-dir ${TRANSPORT_SERVICE}/${WM_TRANSPORT_PKG}

COPY python_transport/wirepas_gateway/wirepas_certs/extwirepas.pem /etc/extwirepas.pem
COPY sink_service/com.wirepas.sink.conf /etc/dbus-1/system.d/

RUN chown ${USER}:${USER} -R ${HOME} \
&& rm -rf ${HOME}/.cache

# Environment
ARG WM_SERVICES_HOST
ARG WM_SERVICES_MQTT_PORT
ARG WM_SERVICES_MQTT_USER
ARG WM_SERVICES_MQTT_PASSWORD
ARG WM_SERVICES_CERTIFICATE_CHAIN

ARG WM_SINK_UART_PORT
ARG WM_SINK_UART_BITRATE
ARG WM_SINK_ID

ENV WM_SERVICES_HOST=${WM_SERVICES_HOST:-"localhost"}
ENV WM_SERVICES_MQTT_PORT=${WM_SERVICES_MQTT_PORT:-"1883"}
ENV WM_SERVICES_MQTT_USER=${WM_SERVICES_MQTT_USER:-"mqttuser"}
ENV WM_SERVICES_MQTT_PASSWORD=${WM_SERVICES_MQTT_PASSWORD:-"12sdftat3089ajoiausd+91as12"}
ENV WM_SERVICES_CERTIFICATE_CHAIN=${WM_SERVICES_CERTIFICATE_CHAIN:-""}
ENV WM_SERVICES_GATEWAY_ID=${WM_SERVICES_GATEWAY_ID:-""}

ENV WM_SINK_UART_PORT=${WM_SINK_UART_PORT:-"/dev/ttyACM0"}
ENV WM_SINK_UART_BITRATE={WM_SINK_UART_BITRATE:-"125000"}
ENV WM_SINK_ID=${WM_SINK_ID:-"0"}

ENV EXEC_TRANSPORT "wm-gw"
ENV EXEC_SINK /usr/local/bin/sinkService

COPY container/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]

USER ${USER}
WORKDIR ${WM_HOME}
USER ${WM_USER}
CMD ["sink"]

ARG LXGW_VERSION
LABEL version=${LXGW_VERSION}
117 changes: 0 additions & 117 deletions container/dev/Dockerfile-rpi

This file was deleted.

61 changes: 61 additions & 0 deletions container/dev/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Wirepas Oy
#
# Linux gateway
#

version: '3'
services:

wm-sink:
container_name: wm-sink
image: wirepas/gateway-x86:edge
build:
context: ../..
dockerfile: container/dev/Dockerfile
args:
LXGW_VERSION: ${LXGW_VERSION:-"local-build"}

user: root
privileged: true
stdin_open: true
tty: true

restart: always
env_file:
- ../wm_gateway.env

volumes:
- /dev:/dev
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket

logging:
driver: journald

command: sink

wm-transport:
container_name: wm-transport
image: wirepas/gateway-x86:edge
build:
context: ../..
dockerfile: container/dev/Dockerfile
args:
LXGW_VERSION: ${LXGW_VERSION:-"local-build"}

user: root
network_mode: host
privileged: true
stdin_open: true
tty: true

restart: always
env_file:
- ../wm_gateway.env

volumes:
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket

logging:
driver: journald

command: transport
Loading

0 comments on commit 8f293d8

Please sign in to comment.