Usar ENTRYPOINT no Dockerfile
Nesta etapa, aprenderemos como usar a instrução ENTRYPOINT em um Dockerfile e utilizar uma porta diferente (9100).
-
No WebIDE, abra o Dockerfile novamente.
-
Modifique o conteúdo do Dockerfile para:
FROM nginx
COPY index.html /usr/share/nginx/html/
COPY start.sh /start.sh
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh"]
Este Dockerfile remove a variável de ambiente e o comando sed. Em vez disso, lidaremos com a configuração em tempo de execução usando um script ENTRYPOINT. Isso torna nossa imagem mais flexível.
- Crie um novo arquivo chamado
start.sh no mesmo diretório com o seguinte conteúdo:
#!/bin/bash
## Set a default port if NGINX_PORT is not set
export NGINX_PORT=${NGINX_PORT:-9100}
## Replace the port in the nginx configuration
sed -i "s/listen[[:space:]]*80;/listen $NGINX_PORT;/g" /etc/nginx/conf.d/default.conf
echo "Starting Nginx on port $NGINX_PORT"
nginx -g 'daemon off;'
Este script define uma porta padrão, modifica a configuração do Nginx na inicialização do container, imprime uma mensagem mostrando em qual porta o Nginx será executado e, em seguida, inicia o Nginx.
-
Salve ambos os arquivos no WebIDE.
-
No terminal do WebIDE, reconstrua a imagem Docker com uma nova tag:
docker build -t my-nginx-entrypoint .
- Execute um container baseado na nova imagem. Definiremos a porta para 9100 usando uma variável de ambiente.
docker run -d -p 9100:9100 -e NGINX_PORT=9100 --name entrypoint-container my-nginx-entrypoint
- Verifique os logs do container para ver a mensagem de inicialização:
docker logs entrypoint-container
Você deve ver a mensagem "Starting Nginx on port 9100" na saída.
- Verifique se o servidor web está funcionando corretamente na nova porta:
curl http://localhost:9100
Você deve ver o conteúdo HTML do arquivo index.html exibido no terminal.