Criador de imagem do Docker

0

Eu quero criar uma imagem própria do docker. Eu uso um Dockerfile para criá-lo e deseja executar apenas o servidor httpd e o cliente mysql. abaixo pode ver meu arquivo de edição. Meu Dockerfile está correto ou não?

# Dockerfile that modifies oraclelinux:6.6 to include an Apache HTTP server
FROM ubuntu:14.04

RUN apt-get -y install apache2

RUN echo "HTTP server running on guest" > /var/www/html/index.html

EXPOSE 80

RUN apt-get -y install mysql-client

EXPOSE 3306
    
por Supun Rathnayake 02.03.2016 / 10:21

1 resposta

3

Não, não está correto, pois você deve ter um CMD para executar no final.

Também há várias práticas recomendadas que você deve incluir para criar menos instantâneos intermediários de contêiner e menor saída:

  • você não deve executar apt-get várias vezes
  • você deve executar apt-get update antes de executar apt-get install
  • você deve limpar depois de executar apt-get install
  • você deve incluir um mantenedor

Tente algo como:

# Dockerfile that modifies oraclelinux:6.6 to include an Apache HTTP server
FROM ubuntu:14.04

MAINTAINER Supun Rathnayake

RUN apt-get update && apt-get install -y \
  apache2 \
  mysql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

RUN echo "HTTP server running on guest" > /var/www/html/index.html

EXPOSE 80

EXPOSE 3306

CMD ["your command to run apache"]

Você provavelmente deve olhar para o docker-hub para um projeto apache2 com muitos downloads e analisar seu Dockerfile, o que é muito instrutivo.

Em princípio, você pode executar o seu cliente mysql dentro do mesmo container, mas isso provavelmente requer algum agendador para iniciar tanto o daemon do apache quanto o do mysql. Alternativamente, você deve procurar colocar o mysql em outro lugar (ou usar um dos contêineres padrão do Dockerhub e vinculá-los ao seu).

    
por 02.03.2016 / 11:09

Tags