Customizations


About

AppIgnition comes with several pre-configured containers out of the box, but not all configurations have been made available in the UI for several reasons:

  • Offering all of the configurations could easily overwhelm the UI and negatively impact the end-user experience for little benefit.

  • Sensible defaults have been chosen that provide tremendous benefit to the development experience with little to no downside.

  • Not all configurations have been thoroughly tested against different types of environments. As this project grows, more configurations will be continually added to the UI so long as there's valid reasons for a user wanting to modify their environment differently than the default, and so long as the configurations have been properly tested with different environments.

For now, modifying container configurations outside of the UI comes at your own risk. Having said that, it was still important to me to provide an inviting experience for others to explore Docker as needed, and be given the room to learn more about the software with the proper guardrails in place. Continue reading this page to learn about the several ways you can modify your workspace's environment.

Custom Configurations

After your first installation takes place, you'll be able to find the container repository under WORKSPACE_PATH/app-ignition-laradock. This directory contains all of the configuration and Dockerfiles needed to make custom changes. The first place where you can make the majority of your custom configurations will be inside the .env file. The .env file has many of the pre-configured settings you can alter to modify how different containers operate. To see how these settings correlate to different containers, view the docker-compose.yml file. If you're unfamiliar with what a docker-compose.yml file is for, continue on to the next section.

{warning} Before making any configurations outside of the container, please verify if these configurations exist in the UI, first. Otherwise, the two environments won't be in sync, and the defaults set in the UI will overwrite your changes when you install or reinstall an application.

The Docker Compose File

The docker-compose.yml file is helpful when an environment needs to run multiple containers at a time. It can define the containers that are planned to be built, pass arguments if they're supported, define volumes, and network the containers together. It's rare that you would need to modify this file yourself, but you might need to if you plan on adding an additional container that's not already available. If that's the case, you won't be able to build the container in AppIgnition. Instead, you'll have to run the following in the WORKSPACE_PATH/app-ignition-laradock path.

docker compose build container-id
docker compose up -d container-id

container-id is the value of the container ID defined in docker-compose.yml. For example, mysql is the container ID in the configuration below:

### MySQL ################################################
    mysql: # This is the container ID
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend

Lastly, to match the same structure as the other containers in the repository, you'd want to create a new directory having the same name as your container ID that can hold your configuration files.

Dockerfiles

The last type of configuration you might need to make is within the Dockerfiles directly. Dockerfiles are used to build the individual containers. Within these files, you can install new software, create and configure files within the container, or run software during the build process. It's unlikely you'd have to modify any of the Dockerfiles except for the Workspace dockerfile (located under the workspace directory). This Dockerfile installs all of the software for your development environment, so you might find the need to swap the default shell, install a client to an external service, or add SSH configurations. The good news is that if you're only modifying the Dockerfiles for the containers supported in the AppIgnition UI, you can execute these changes by installing or reinstalling one of your applications.