Como criar um diretório com o comando Mkdir em um contêiner com Dockerfile
- #Docker
Os contêineres Docker se tornaram a maneira de fato de gerenciar software e dependências em diferentes ambientes. Ao trabalhar com aplicativos reais, não há dúvida de que você precisará criar um Dockerfile antes de poder construir a imagem do contêiner de seus aplicativos.
Crie diretório com mkdir
comando em um contêiner com Dockerfile
Além de apenas permitir que os desenvolvedores montem os comandos necessários para criar imagens Docker, há muito mais que podemos fazer com Dockerfiles. Para criar com êxito uma imagem Docker usando um Dockerfile, você deve conhecer alguns comandos básicos.
Alguns dos comandos mais usados incluem:
FROM
- Cria uma camada da imagem pai/imagem base que será utilizada.WORKDIR
- nos permite definir o diretório de trabalho.COPY
- nos permite copiar o conteúdo do diretório atual para um diretório no contêiner.PULL
- Adiciona arquivos do seu repositório Docker.RUN
- Comando a ser executado quando quisermos construir a imagem.CMD
- especifica qual comando será executado quando o contêiner for iniciado.ENV
- Define variáveis ambientais utilizadas durante a construção.ENTRYPOINT
- especifica qual comando será executado quando o contêiner for iniciado.MAINTAINER
- Especifica o autor da imagem.
Usando os comandos acima, podemos criar um Dockerfile como o abaixo que usa Python como imagem base.
Código:
# base image
FROM
Python
# Set your working directory
WORKDIR
/var/www/
# Copy the necessary files
COPY
./app.py /var/www/app.py
COPY
./requirements.txt /var/www/requirements.txt
# Install the necessary packages
RUN
pip install -r /var/www/requirements.txt
# Run the app
CMD
[
"echo"
,
"Hello, Developer"
]
Este Dockerfile faz parte de um aplicativo Flask simples que imprime apenas uma mensagem no console. Aqui está o requirements.txt
arquivo se você estiver interessado em criar o mesmo aplicativo.
click==8.0.4
Flask==2.0.3
gunicorn==20.1.0
itsdangerous==2.1.0
Jinja2==3.0.3
MarkupSafe==2.1.0
Werkzeug==2.0.3
O arquivo principal app.py
que contém o arquivo principal do aplicativo é mostrado abaixo.
Código:
from flask import Flask
app = Flask(__name__)
def hello():
print("Hello, this is a simple Flask application")
hello()
Agora, para criar um diretório com o mkdir
comando dentro do sistema de arquivos do nosso contêiner Docker, usaremos o RUN
comando conforme mostrado abaixo.
# base image
FROM
Python
# Set your working directory
WORKDIR
/var/www/
# Copy the necessary files
COPY
./app.py /var/www/app.py
COPY
./requirements.txt /var/www/requirements.txt
# Install the necessary packages
RUN
pip install -r /var/www/requirements.txt
RUN
mkdir -p /var/www/new_directory
# Run the app
CMD
[
"echo"
,
"Hello, Developer"
]
O comando RUN mkdir -p /var/www/new_directory
permite que você crie um diretório nomeado new_directory
dentro do sistema de arquivos Docker que eventualmente construiremos usando uma imagem construída usando o arquivo Docker acima.
No entanto, começaremos construindo uma imagem Docker baseada em Python como imagem base executando o comando abaixo.
isaac@DESKTOP-HV44HT6:~/my-app$ docker build -t new_image .
Saída:
Confirme que construímos com sucesso uma imagem Docker a partir do arquivo Docker usando o docker images
comando abaixo.
$ docker images
Saída:
REPOSITORY TAG IMAGE ID CREATED SIZE
new_image latest 7ab964c50876 13 minutes ago 932MB
Agora que temos uma imagem Docker instalada, podemos prosseguir e criar um contêiner Docker e confirmar se o diretório nomeado new_directory
foi criado. Conforme mostrado abaixo, precisaremos iniciar Bash
dentro do contêiner para navegar nos diretórios dentro do contêiner Docker.
$ docker run -it new_image bash
root@ea42f35d5404:/var/www#
Você notará que new_directory
foi criado após listar os arquivos neste diretório. Além disso, também podemos navegar no próprio diretório e até criar novos arquivos dentro dele.
root@ea42f35d5404:/var/www# ls
app.py new_directory requirements.txt
root@ea42f35d5404:/var/www#
cd
new_directory
root@ea42f35d5404:/var/www/new_directory# ls
root@ea42f35d5404:/var/www/new_directory# touch new_file
root@ea42f35d5404:/var/www/new_directory# ls
new_file