Skip to content

hajsf/mojo-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

hyousef@msn.comhyousef@msn.com
hyousef@msn.com
and
hyousef@msn.com
Jan 6, 2024
a22dcab · Jan 6, 2024

History

19 Commits
Jan 6, 2024
Dec 24, 2023
Dec 25, 2023
Dec 24, 2023
Dec 24, 2023
Dec 24, 2023
Dec 24, 2023
Dec 24, 2023
Dec 24, 2023
Dec 24, 2023

Repository files navigation

The Docker file:

Here's a line-by-line explanation of your Dockerfile:

# Use Ubuntu 24.04 as the base image
FROM ubuntu:24.04

This line is pulling the ubuntu Docker image with the tag 24.04 from Docker Hub.

# Set the environment variable to noninteractive mode
ENV DEBIAN_FRONTEND=noninteractive

This line is setting the DEBIAN_FRONTEND environment variable to noninteractive. This is often done in Dockerfiles to prevent interactive prompts from appearing during the build process.

# Set /app as the working directory
WORKDIR /app

This line is setting the working directory inside the Docker container to /app. All subsequent RUN, CMD, ENTRYPOINT, COPY, and ADD commands will be run relative to this directory.

# Copy the shell script and the .env file into the Docker image
COPY auth_script.sh .
COPY .env .

These lines are copying the auth_script.sh and .env files from your local machine (the Docker build context) to the current directory (/app) inside the Docker container.

RUN apt-get update &&  \
    # Install required dependencies
    apt-get install -y \
    python3 \
    python3-venv \
    gnupg \
    git \
    curl \
    wget \
    && apt-get clean && rm -rf /var/lib/apt/lists/* \
    # Download Modular setup requirements
    && set -eux; \
    keyring_location=/usr/share/keyrings/modular-installer-archive-keyring.gpg \
    && curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/gpg.0E4925737A3895AD.key' | gpg --dearmor >> ${keyring_location} \
    && curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/config.deb.txt?distro=debian&codename=wheezy' > /etc/apt/sources.list.d/modular-installer.list \
    && apt-get update \
    # Install Modular
    && apt-get install -y modular \
    && apt-get clean && rm -rf /var/lib/apt/lists/* \
    && echo 'export MODULAR_HOME="/root/.modular"' >> ~/.bashrc \
    && echo 'export PATH="/root/.modular/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc \
    && /bin/bash -c "source ~/.bashrc" \
    # Install Mojo Lang
    && modular clean \
    && chmod +x auth_script.sh \
    && ./auth_script.sh \
    && modular install mojo \
    # Create a symbolic link that points from /usr/bin/python to /usr/bin/python3
    && ln -s /usr/bin/python3 /usr/bin/python \
    # Clean unrequired dependencies
    && apt-get remove -y \
    gnupg \
    && apt-get autoremove -y \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && apt-get purge -y --auto-remove \
    # Delete the files after you're done with them
    && rm auth_script.sh .env

This RUN command is doing a lot of things. It's updating the package lists, installing some packages, cleaning up, downloading and installing Modular and Mojo Lang, creating a symbolic link for Python, and cleaning up again, all had been run in a single RUN command to reduce the number of docker layers, and then reducing the docker image size

# Expose port 80
EXPOSE 80

This line is telling Docker that the Docker container will listen on port 80. This doesn't actually publish the port; it's more like documentation. To publish the port, you need to use the -p option with docker run.

# Set the entrypoint and command to keep the container running
ENTRYPOINT ["tail"]
CMD ["-f", "/dev/null"]

These lines are setting the default command that will be executed when the Docker container is run. In this case, the tail -f /dev/null command will be run, which does nothing and never exits. This is often used in Dockerfiles to keep the Docker container running indefinitely.

The Docker compose file:

Here's a line-by-line explanation of your Docker Compose file:

version: '3.8'

This line specifies the version of the Docker Compose file format. This should match the version of Docker Compose you are using.

services:

This line begins the section where you define your services. Each service represents a container that will be run when you start your Docker Compose application.

  mojo-sdk:

This line begins the definition of a service named mojo-sdk.

    container_name: mojo-sdk

This line sets the name of the container when it is run. If you don't specify this, Docker Compose will generate a name based on the project and service names.

    image: mojo-sdk:r0.6

This line specifies the Docker image to use for this service. In this case, it's using the mojo-sdk image with the tag r0.6.

    build:

This line begins a section where you can specify build options. These options will be used if you need to build the Docker image for this service.

      context: .

This line sets the build context to the current directory. The build context is the set of files that Docker can access during the build process.

      dockerfile: Dockerfile.mojosdk

This line specifies the name of the Dockerfile to use when building the Docker image. In this case, it's using Dockerfile.mojosdk.

      no_cache : true

This line tells Docker not to use the build cache when building the Docker image.

    volumes:

This line begins a section where you can specify volumes to mount in the container.

      - /home/hajsf/Development/mojo:/root

This line mounts the /home/hajsf/Development/mojo directory from the host machine to the /root directory in the container.

      - mojo:/root

This line mounts the mojo volume to the /root directory in the container.

    ports:

This line begins a section where you can specify ports to expose from the container.

      - 3000:80

This line maps port 3000 on the host machine to port 80 in the container.

volumes:

This line begins a section where you can define named volumes. Named volumes can be used by multiple services and persist data even when no containers are using them.

  mojo:

This line defines a named volume called mojo.

Result

Mojo Installed

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published