O7 Logo

Configuration pour un conteneur de Développement

Exemple de configuration pour un conteneur dans un environnement de développement

Exemple

  • Cet exemple vient de ma configuration pour le développement de O7CLI.

Répertoire Dockerfiles

  • Créer ce répertoire dans le projet
  • Si vous avez besoin de plusieurs images, tous les fichiers seront ici

dockerfiles/o7clidev.dockerfile

FROM python:3.10-slim-bullseye

RUN apt update && apt -y upgrade

# Install useful basic packages
RUN apt install -y curl nmap ssh git dnsutils wget unzip  xz-utils jq

# Useful Pyhton Lib
RUN pip install pytest coverage pandas openpyxl build requests boto3


# AWS CLI V2 https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
    && unzip awscliv2.zip \
    && bash ./aws/install \
    && rm awscliv2.zip && rm -r aws

# AWS Session Manager plugin for the AWS CLI
RUN curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb" \
    && dpkg -i session-manager-plugin.deb \
    && rm session-manager-plugin.deb

RUN mkdir /gito7 &&  mkdir /keys

COPY *.sh /root/scripts/
COPY .bashrc /root

WORKDIR /gito7

CMD ["/bin/bash"]

dockerfiles/.bashrc

export PS1='[\w]> '

alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias e='env | sort'
alias p='python'
alias df='diff'

alias ct='coverage run -m unittest discover -v tests && coverage report && coverage html'
alias cl='pylint src/ && echo $?'

alias gs='git status'
alias dc='docker-compose'
alias d='docker'
alias setenv='source setenv.sh'

export PATH=/o7cli/scripts:/root/scripts:$PATH
export PYTHONPATH=/o7cli/src

echo 'Quick Command:'
echo '   ct: Full Unit Test & Coverage'
echo '   cl: Lint all source file'

dockerfiles/setenv.sh Permet d’avoir plusieurs alias ou raccourcis dans votre environnement.

#!/usr/bin/env bash

# Show env vars
grep -v '^#' .env

# Export env vars
export $(grep -v '^#' .env | xargs)

Docker Compose

  • Dans le répertoire principal du projet
  • Nous allons mettre un fichier docker-compose

docker-compose.yml

version: '3'
services:
  o7d:
    build:
      context: .\dockerfiles
      dockerfile: o7clidev.dockerfile
    image: o7clidev
    stdin_open: true
    tty: true
    environment:
      - APIKEY=123qwerty
    volumes:

      - C:\temp\download:/download
      - C:\temp\gito7:/gito7
      - ~/.aws:/root/.aws
      - ~/.ssh:/root/.ssh
    command: bash

    # On peut ajouter au besoin
    pg11:
    image: 'postgres:11.4-alpine'
    environment:
      - POSTGRES_PASSWORD=baconbacon
    ports:
      - '5432:5432'
    volumes:
      - C:\temp\postgres11\data:/var/lib/postgresql/data

Commandes

# Pour Construire l'image
docker compose build o7d

# Pour démarrer le conteneur de Dev en mode Shell
docker compose run --rm o7d bash

# Pour Permettre que les port soit accessible en mode Shell
docker compose run --service-ports --rm o7d bash

FIN