Skip to content

Commit

Permalink
Change Dockerfiles to make the AMD image multidb
Browse files Browse the repository at this point in the history
  • Loading branch information
dani-garcia committed Aug 24, 2020
1 parent 0365b7c commit 4c324e1
Show file tree
Hide file tree
Showing 17 changed files with 50 additions and 872 deletions.
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,23 @@ target

# Data folder
data
.env

# IDE files
.vscode
.idea
*.iml

# Documentation
.github
*.md
*.txt
*.yml
*.yaml

# Docker folders
hooks
tools

# Web vault
web-vault
2 changes: 1 addition & 1 deletion Dockerfile
54 changes: 17 additions & 37 deletions docker/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# This file was generated using a Jinja2 template.
# Please make your changes in `Dockerfile.j2` and then `make` the individual Dockerfile's.

{% set build_stage_base_image = "rust:1.40" %}
{% set build_stage_base_image = "rust:1.45" %}
{% if "alpine" in target_file %}
{% set build_stage_base_image = "clux/muslrust:nightly-2020-03-09" %}
{% set runtime_stage_base_image = "alpine:3.11" %}
{% set build_stage_base_image = "clux/muslrust:nightly-2020-07-09" %}
{% set runtime_stage_base_image = "alpine:3.12" %}
{% set package_arch_name = "" %}
{% elif "amd64" in target_file %}
{% set runtime_stage_base_image = "debian:buster-slim" %}
Expand Down Expand Up @@ -42,25 +42,19 @@
FROM bitwardenrs/web-vault@{{ vault_image_hash }} as vault

########################## BUILD IMAGE ##########################
{% if "musl" in build_stage_base_image %}
# Musl build image for statically compiled binary
{% else %}
# We need to use the Rust build image, because
# we need the Rust compiler and Cargo tooling
{% endif %}
FROM {{ build_stage_base_image }} as build

{% if "sqlite" in target_file %}
# set sqlite as default for DB ARG for backward compatibility
{% if "alpine" in target_file %}
# Alpine only works on SQlite
ARG DB=sqlite

{% elif "mysql" in target_file %}
# set mysql backend
ARG DB=mysql
{% elif "amd64" in target_file %}
# AMD64 supports all
ARG DB=sqlite,mysql,postgresql

{% elif "postgresql" in target_file %}
# set postgresql backend
ARG DB=postgresql
{% else %}
# ARM only supports SQLite for now
ARG DB=sqlite

{% endif %}
# Build time options to avoid dpkg warnings and help with reproducible builds.
Expand All @@ -73,7 +67,7 @@ RUN rustup set profile minimal
ENV USER "root"
ENV RUSTFLAGS='-C link-arg=-s'

{% elif "arm32" in target_file or "arm64" in target_file %}
{% elif "arm" in target_file %}
# Install required build libs for {{ package_arch_name }} architecture.
RUN sed 's/^deb/deb-src/' /etc/apt/sources.list > \
/etc/apt/sources.list.d/deb-src.list \
Expand All @@ -96,7 +90,6 @@ RUN apt-get update \

ENV CARGO_HOME "/root/.cargo"
ENV USER "root"

{% elif "arm32v6" in target_file %}
RUN apt-get update \
&& apt-get install -y \
Expand All @@ -108,7 +101,6 @@ RUN apt-get update \

ENV CARGO_HOME "/root/.cargo"
ENV USER "root"

{% elif "arm32v7" in target_file %}
RUN apt-get update \
&& apt-get install -y \
Expand All @@ -120,27 +112,16 @@ RUN apt-get update \

ENV CARGO_HOME "/root/.cargo"
ENV USER "root"

{% endif %}
{% if "mysql" in target_file %}
# Install MySQL package
{% if "amd64" in target_file %}
# Install DB packages
RUN apt-get update && apt-get install -y \
--no-install-recommends \
{% if "musl" in build_stage_base_image %}
libmysqlclient-dev{{ package_arch_prefix }} \
{% else %}
libmariadb-dev{{ package_arch_prefix }} \
{% endif %}
&& rm -rf /var/lib/apt/lists/*

{% elif "postgresql" in target_file %}
# Install PostgreSQL package
RUN apt-get update && apt-get install -y \
--no-install-recommends \
libpq-dev{{ package_arch_prefix }} \
&& rm -rf /var/lib/apt/lists/*

{% endif %}

# Creates a dummy project used to grab dependencies
RUN USER=root cargo new --bin /app
WORKDIR /app
Expand Down Expand Up @@ -178,6 +159,7 @@ RUN rustup target add arm-unknown-linux-gnueabi

{% elif "arm32v7" in target_file %}
RUN rustup target add armv7-unknown-linux-gnueabihf

{% endif %}
# Builds your dependencies and removes the
# dummy project, except the target folder
Expand Down Expand Up @@ -239,11 +221,9 @@ RUN apt-get update && apt-get install -y \
openssl \
ca-certificates \
curl \
{% if "sqlite" in target_file %}
sqlite3 \
{% elif "mysql" in target_file %}
{% if "amd64" in target_file %}
libmariadbclient-dev \
{% elif "postgresql" in target_file %}
libpq5 \
{% endif %}
&& rm -rf /var/lib/apt/lists/*
Expand Down
13 changes: 7 additions & 6 deletions docker/amd64/mysql/Dockerfile → docker/amd64/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,22 @@
FROM bitwardenrs/web-vault@sha256:afba1e3bded09dc0a6a0dbacb3363ac33b6f122b4b26d3682cafb9115bdf785c as vault

########################## BUILD IMAGE ##########################
# We need to use the Rust build image, because
# we need the Rust compiler and Cargo tooling
FROM rust:1.40 as build
FROM rust:1.45 as build

# set mysql backend
ARG DB=mysql
# AMD64 supports all
ARG DB=sqlite,mysql,postgresql

# Build time options to avoid dpkg warnings and help with reproducible builds.
ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 TZ=UTC TERM=xterm-256color

# Don't download rust docs
RUN rustup set profile minimal

# Install MySQL package
# Install DB packages
RUN apt-get update && apt-get install -y \
--no-install-recommends \
libmariadb-dev \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*

# Creates a dummy project used to grab dependencies
Expand Down Expand Up @@ -78,7 +77,9 @@ RUN apt-get update && apt-get install -y \
openssl \
ca-certificates \
curl \
sqlite3 \
libmariadbclient-dev \
libpq5 \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir /data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@
FROM bitwardenrs/web-vault@sha256:afba1e3bded09dc0a6a0dbacb3363ac33b6f122b4b26d3682cafb9115bdf785c as vault

########################## BUILD IMAGE ##########################
# Musl build image for statically compiled binary
FROM clux/muslrust:nightly-2020-03-09 as build
FROM clux/muslrust:nightly-2020-07-09 as build

# set postgresql backend
ARG DB=postgresql
# Alpine only works on SQlite
ARG DB=sqlite

# Build time options to avoid dpkg warnings and help with reproducible builds.
ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 TZ=UTC TERM=xterm-256color
Expand All @@ -33,9 +32,10 @@ RUN rustup set profile minimal
ENV USER "root"
ENV RUSTFLAGS='-C link-arg=-s'

# Install PostgreSQL package
# Install DB packages
RUN apt-get update && apt-get install -y \
--no-install-recommends \
libmariadb-dev \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*

Expand Down Expand Up @@ -70,7 +70,7 @@ RUN cargo build --features ${DB} --release
######################## RUNTIME IMAGE ########################
# Create a new stage with a minimal image
# because we already have a binary built
FROM alpine:3.11
FROM alpine:3.12

ENV ROCKET_ENV "staging"
ENV ROCKET_PORT=80
Expand All @@ -81,7 +81,6 @@ ENV SSL_CERT_DIR=/etc/ssl/certs
RUN apk add --no-cache \
openssl \
curl \
postgresql-libs \
ca-certificates

RUN mkdir /data
Expand Down
105 changes: 0 additions & 105 deletions docker/amd64/mysql/Dockerfile.alpine

This file was deleted.

Loading

0 comments on commit 4c324e1

Please sign in to comment.