<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Profesionales de Docker</provider_name><provider_url>https://dockerpros.com/es</provider_url><title>Docker Compose Override Files - Dockerpros</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="tFdQEc8ZrA"&gt;&lt;a href="https://dockerpros.com/es/wiki/docker-compose-override-files/"&gt;Archivos de Anulaci&#xF3;n de Docker Compose

Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multi-contenedor de Docker utilizando archivos YAML. Los archivos de anulaci&#xF3;n de Docker Compose son una caracter&#xED;stica poderosa que permite modificar la configuraci&#xF3;n de un servicio sin alterar el archivo docker-compose.yml original.

&#xBF;Qu&#xE9; son los archivos de anulaci&#xF3;n?

Los archivos de anulaci&#xF3;n son archivos YAML adicionales que se utilizan junto con el archivo docker-compose.yml principal para modificar o extender su configuraci&#xF3;n. Estos archivos siguen una convenci&#xF3;n de nomenclatura espec&#xED;fica y se pueden utilizar para:

1. Sobrescribir valores de configuraci&#xF3;n existentes
2. Agregar nuevos servicios o redes
3. Modificar variables de entorno
4. Cambiar puertos o vol&#xFA;menes
5. Ajustar configuraciones espec&#xED;ficas del entorno

Convenci&#xF3;n de nomenclatura

El archivo de anulaci&#xF3;n m&#xE1;s com&#xFA;nmente utilizado se llama docker-compose.override.yml. Docker Compose busca autom&#xE1;ticamente este archivo cuando se ejecuta el comando docker-compose up. Sin embargo, tambi&#xE9;n puedes utilizar otros nombres de archivo y especificarlos manualmente utilizando la opci&#xF3;n -f.

Estructura del archivo de anulaci&#xF3;n

La estructura de un archivo de anulaci&#xF3;n es similar a la del archivo docker-compose.yml principal. Contiene las mismas claves de nivel superior (version, services, networks, volumes), pero solo incluye las secciones que deseas modificar o agregar.

Ejemplo de uso

Supongamos que tienes el siguiente archivo docker-compose.yml:

```yaml
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    environment:
      - NODE_ENV=production
```

Y creas un archivo docker-compose.override.yml con el siguiente contenido:

```yaml
version: '3.8'
services:
  web:
    environment:
      - NODE_ENV=development
    volumes:
      - ./app:/app
```

Cuando ejecutes docker-compose up, Docker Compose combinar&#xE1; ambos archivos, resultando en una configuraci&#xF3;n final donde:

- La variable de entorno NODE_ENV se establece en "development" (sobrescribiendo el valor original)
- Se agrega un volumen adicional

Uso avanzado

Puedes crear m&#xFA;ltiples archivos de anulaci&#xF3;n para diferentes prop&#xF3;sitos:

1. docker-compose.override.yml: Para configuraciones por defecto del entorno de desarrollo
2. docker-compose.prod.yml: Para configuraciones de producci&#xF3;n
3. docker-compose.test.yml: Para configuraciones de pruebas

Para utilizar estos archivos, puedes ejecutar:

```bash
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
```

Ventajas de usar archivos de anulaci&#xF3;n

1. Mantenimiento m&#xE1;s f&#xE1;cil: Permite mantener el archivo principal limpio y espec&#xED;fico del entorno
2. Flexibilidad: Facilita la adaptaci&#xF3;n de la configuraci&#xF3;n para diferentes entornos
3. Control de versiones: Permite mantener diferentes configuraciones en ramas separadas
4. Reutilizaci&#xF3;n: Facilita la reutilizaci&#xF3;n de configuraciones base en m&#xFA;ltiples proyectos

Consideraciones importantes

1. Los archivos de anulaci&#xF3;n no pueden eliminar servicios o configuraciones existentes, solo modificarlos o agregar nuevos
2. Las claves en los archivos de anulaci&#xF3;n se fusionan con las del archivo principal, no las reemplazan completamente
3. Si una clave en el archivo de anulaci&#xF3;n se establece en null, se eliminar&#xE1; del servicio

Conclusi&#xF3;n

Los archivos de anulaci&#xF3;n de Docker Compose son una herramienta poderosa para gestionar configuraciones complejas de aplicaciones multi-contenedor. Permiten mantener una configuraci&#xF3;n base limpia mientras se adapta f&#xE1;cilmente a diferentes entornos y casos de uso. Al dominar el uso de estos archivos, puedes mejorar significativamente tu flujo de trabajo de desarrollo y despliegue con Docker Compose.&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://dockerpros.com/es/wiki/docker-compose-override-files/embed/#?secret=tFdQEc8ZrA" width="600" height="338" title="&#xAB;Docker Compose Override Files&#xBB; &#x2014; Dockerpros" data-secret="tFdQEc8ZrA" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/**
 * WordPress inline HTML embed
 *
 * @since 4.4.0
 * @output wp-includes/js/wp-embed.js
 *
 * Single line comments should not be used since they will break
 * the script when inlined in get_post_embed_html(), specifically
 * when the comments are not stripped out due to SCRIPT_DEBUG
 * being turned on.
 */
(function ( window, document ) {
	'use strict';

	/* Abort for ancient browsers. */
	if ( ! document.querySelector || ! window.addEventListener || typeof URL === 'undefined' ) {
		return;
	}

	/** @namespace wp */
	window.wp = window.wp || {};

	/* Abort if script was already executed. */
	if ( !! window.wp.receiveEmbedMessage ) {
		return;
	}

	/**
	 * Receive embed message.
	 *
	 * @param {MessageEvent} e
	 */
	window.wp.receiveEmbedMessage = function( e ) {
		var data = e.data;

		/* Verify shape of message. */
		if (
			! ( data || data.secret || data.message || data.value ) ||
			/[^a-zA-Z0-9]/.test( data.secret )
		) {
			return;
		}

		var iframes = document.querySelectorAll( 'iframe[data-secret="' + data.secret + '"]' ),
			blockquotes = document.querySelectorAll( 'blockquote[data-secret="' + data.secret + '"]' ),
			allowedProtocols = new RegExp( '^https?:$', 'i' ),
			i, source, height, sourceURL, targetURL;

		for ( i = 0; i &lt; blockquotes.length; i++ ) {
			blockquotes[ i ].style.display = 'none';
		}

		for ( i = 0; i &lt; iframes.length; i++ ) {
			source = iframes[ i ];

			if ( e.source !== source.contentWindow ) {
				continue;
			}

			source.removeAttribute( 'style' );

			if ( 'height' === data.message ) {
				/* Resize the iframe on request. */
				height = parseInt( data.value, 10 );
				if ( height &gt; 1000 ) {
					height = 1000;
				} else if ( ~~height &lt; 200 ) {
					height = 200;
				}

				source.height = height;
			} else if ( 'link' === data.message ) {
				/* Link to a specific URL on request. */
				sourceURL = new URL( source.getAttribute( 'src' ) );
				targetURL = new URL( data.value );

				if (
					allowedProtocols.test( targetURL.protocol ) &amp;&amp;
					targetURL.host === sourceURL.host &amp;&amp;
					document.activeElement === source
				) {
					window.top.location.href = data.value;
				}
			}
		}
	};

	function onLoad() {
		var iframes = document.querySelectorAll( 'iframe.wp-embedded-content' ),
			i, source, secret;

		for ( i = 0; i &lt; iframes.length; i++ ) {
			/** @var {IframeElement} */
			source = iframes[ i ];

			secret = source.getAttribute( 'data-secret' );
			if ( ! secret ) {
				/* Add secret to iframe */
				secret = Math.random().toString( 36 ).substring( 2, 12 );
				source.src += '#?secret=' + secret;
				source.setAttribute( 'data-secret', secret );
			}

			/*
			 * Let post embed window know that the parent is ready for receiving the height message, in case the iframe
			 * loaded before wp-embed.js was loaded. When the ready message is received by the post embed window, the
			 * window will then (re-)send the height message right away.
			 */
			source.contentWindow.postMessage( {
				message: 'ready',
				secret: secret
			}, '*' );
		}
	}

	window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );
	document.addEventListener( 'DOMContentLoaded', onLoad, false );
})( window, document );
//# sourceURL=https://dockerpros.com/wp-includes/js/wp-embed.js
&lt;/script&gt;</html><thumbnail_url>https://dockerpros.com/wp-content/uploads/2024/07/docker-compose-override-files_1271.jpg</thumbnail_url><thumbnail_width>800</thumbnail_width><thumbnail_height>600</thumbnail_height><description>Docker Compose override files allow users to customize and extend the base configuration defined in a `docker-compose.yml` file. By creating a `docker-compose.override.yml`, developers can specify additional services, modify existing ones, or override settings, enabling flexible deployment scenarios without altering the primary configuration. This feature enhances collaboration and environment-specific setups, streamlining development and production workflows.</description></oembed>
