Skip to content

Commit

Permalink
Refactor Dockerfile
Browse files Browse the repository at this point in the history
- Split build stages
- Update list of deb packages to install
- Add volumes for storing data and configs
- Build from local repo instead of doing `git clone`
  • Loading branch information
bitphage committed Apr 24, 2019
1 parent 80bb525 commit 8339f81
Showing 1 changed file with 42 additions and 26 deletions.
68 changes: 42 additions & 26 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,50 @@
FROM ubuntu:18.04

# Variable arguments to populate labels
ARG VERSION=0.9.5
ARG USER=dexbot

# Set ENV variables
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV DEXBOT_HOME_PATH /home/$USER
ENV DEXBOT_REPO_PATH $DEXBOT_HOME_PATH/repo
ENV PATH $DEXBOT_HOME_PATH/.local/bin:$PATH

# Update Ubuntu Software repository
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository universe

# Install dependencies
RUN apt-get install -y --install-recommends gcc libssl-dev python3-pip python3-dev python3-async whiptail inetutils-ping wget sudo git

# Create user and change workdir
RUN groupadd -r $USER && useradd -r -g $USER $USER
WORKDIR $DEXBOT_HOME_PATH
RUN chown -R $USER:$USER $DEXBOT_HOME_PATH
USER dexbot

RUN pip3 install --user pyyaml uptick tabulate ruamel.yaml sqlalchemy ccxt

# Download and Install DEXBot

RUN git clone https://github.com/Codaone/DEXBot.git -b $VERSION $DEXBOT_REPO_PATH
RUN cd $DEXBOT_REPO_PATH && make install-user
RUN rm -rf $DEXBOT_REPO_PATH
ENV HOME_PATH /home/$USER
ENV SRC_PATH $HOME_PATH/source
ENV PATH $HOME_PATH/.local/bin:$PATH
ENV LOCAL_DATA $HOME_PATH/.local/share
ENV CONFIG_DATA $HOME_PATH/.config

RUN set -xe ;\
apt-get update ;\
apt-get install -y software-properties-common ;\
add-apt-repository universe ;\
# Prepare dependencies
apt-get install -y --install-recommends gcc make libssl-dev python3-pip python3-dev python3-async whiptail

RUN set -xe ;\
# Create user and change workdir
groupadd -r $USER ;\
useradd -m -g $USER $USER ;\
# Configure permissions (directories must be created with proper owner before VOLUME directive)
mkdir -p $SRC_PATH $LOCAL_DATA $CONFIG_DATA ;\
chown -R $USER:$USER $HOME_PATH

# Drop priveleges
USER $USER

WORKDIR $SRC_PATH

# Install dependencies in separate stage to speed up further builds
COPY requirements.txt $SRC_PATH/
RUN python3 -m pip install --user -r requirements.txt

# Copy project files
COPY dexbot $SRC_PATH/dexbot/
COPY *.py *.cfg Makefile README.md $SRC_PATH/

# Build the project
RUN set -xe ;\
python3 setup.py build ;\
python3 setup.py install --user

WORKDIR $HOME_PATH

VOLUME ["$LOCAL_DATA", "$CONFIG_DATA"]

0 comments on commit 8339f81

Please sign in to comment.