Aquesta és una revisió antiga del document
docker-compose
variables
- maneras de definir variables para usar en el fichero docker-compose.yml
- están ordenadas de menos prioritaria a más prioritaria:
- se puede definir un fichero .env con variables para usar en el docker-compose: VARIABLE
- se pueden usar variables definidas en el shell dentro del docker-compose :
${VARIABLE} - se pueden pasar variables desde la línea de comandos:
docker run -e <variable>=<valor>odocker run --e <variable>=<valor> - se pueden especificar otros archivos de variables y pasarlas desde la línea de comandos:
docker run --env-file <fichero>
- .env
# variables de entorno preceden a estas # variables pasadas por línea de comando preceden a estas # docker run --env <variable>=<valor> # se pueden especificar otras variables en otros archivos # docker run --env-file <fichero> MYSQL_ROOT_PASSWORD=toor MYSQL_DATABASE=xxxx MYSQL_USER=xxxx MYSQL_PASSWORD=xxxx MYSQL_STORAGE_PATH=/home/mate/Docker/.storage/mysql/xxxx
- para pasar variables a los contenedores, se puede:
- usar la sección environment, donde definimos la variable (y podemos setear o hace que recoga el valor del shell)
- usar la sección env_file, donde carga los valores desde un fichero externo
- pasarlo por línea de comando con el parámetro -e <VAR>[=<VALOR>] y al igual que la seccción environment, podemos setearlo directamente o dejar que coja el valor que haya en el shell
- para ver el resultado de aplicar varias configuraciones de variables y que se obtiene el resultado que se desea, podemos usar:
docker-compose configy nos mostrará el fichero con el resultado final una vez hecha la conversión de las diferentes variables
sftp
- mapea en la carpeta home del usuario especificado (no se puede sustituir el $HOME)
- permite mapear varios usuarios
- permite encriptación de contraseñas
- permite certificados
- docker-compose.yml
sftp: image: atmoz/sftp volumes: - ${PWD}/upload:/home/foo/upload ports: - "2222:22" command: foo:user123:1001
portainer
- docker-compose.yml
version: '2' services: portainer: image: portainer/portainer restart: always container_name: "portainer-app" # command: --templates http://templates/templates.json ports: - "9000:9000" networks: - local volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data:/data networks: local: driver: bridge
mysql
- docker-compose.yml
version: '3.6' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} networks: mi-network: ipv4_address: 172.22.0.10 ports: - 3306:3306 volumes: db_data: driver: local driver_opts: type: 'none' o: 'bind' device: '${MYSQL_STORAGE_PATH}' networks: # docker network create --attachable --subnet 172.22.0.0/24 mi-network mi-network: external: true
PHP + MARIADB (FIDMAG)
start
docker-compose -d up
files
FROM php:7.2-apache
ENV APACHE_DOCUMENT_ROOT /var/www/intranet/www
RUN apt-get update -y \
&& apt-get install -y libpng-dev libwebp-dev libjpeg62-turbo-dev libxpm-dev \
&& docker-php-ext-install mysqli \
&& a2enmod rewrite \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure gd \
--with-gd \
--with-webp-dir \
--with-jpeg-dir \
--with-png-dir \
--with-xpm-dir \
&& docker-php-ext-install gd
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
CMD /usr/sbin/apache2ctl -D FOREGROUND
- docker-compose.yml
version: '3.7' services: app: build: . image: fidmag:7.2-php-apache ports: - "80:80" volumes: - /home/mtorrese/GIT/intranet_fidmag_org:/var/www/intranet depends_on: - "db" container_name: php db: image: mariadb # restart: always ports: - "3306:3306" volumes: - ./data/db:/var/lib/mysql env_file: - db.env container_name: db
MYSQL_ROOT_PASSWORD=toor MYSQL_DATABASE=intranet-docker MYSQL_USER=intranet-docker MYSQL_PASSWORD=intranet-docker