Home > Mobile >  how to make a dockerfile with only one container?
how to make a dockerfile with only one container?

Time:06-09

I have a yii1 application. And I have a dockerfile. And I had a docker-compose file.

But for the momemnt I only have one application. Because I have a remote database. So the database is not in a container.

So I have this dockerfile:

FROM php:7.3-apache

#COPY BaltimoreCyberTrustRoot.crt.pem /usr/local/share/ca-certificates/AzureDB.crt

# Copy virtual host into container
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf

# Enable rewrite mode
RUN a2enmod rewrite

# Install necessary packages
RUN apt-get update && \
    apt-get install \
    libzip-dev \
    wget \
    git \
    unzip \
    -y --no-install-recommends

# Install PHP Extensions
RUN docker-php-ext-install zip pdo_mysql

# RUN pecl install -o -f xdebug-3.1.3 \
#     && rm -rf /tmp/pear

# Copy composer installable
COPY ./install-composer.sh ./

# Copy php.ini
COPY ./php.ini /usr/local/etc/php/

#COPY BaltimoreCyberTrustRoot.crt.pem /var/www/html/

EXPOSE 80

# Cleanup packages and install composer
RUN apt-get purge -y g   \
    && apt-get autoremove -y \
    && rm -r /var/lib/apt/lists/* \
    && rm -rf /tmp/* \
    && sh ./install-composer.sh \
    && rm ./install-composer.sh

# Change the current working directory
WORKDIR /var/www/html

# Change the owner of the container document root
RUN chown -R www-data:www-data /var/www

# Start Apache in foreground
CMD ["apache2-foreground"]

And I had this docker-compose file:

version: '3'
services:
  web:   
    build: ./docker       
    container_name: dockeryiidisc
    ports:
      - 80:80
      - 443:443
    volumes:
      - C:\xampp\htdocs\webScraper/docker:/etc/apache2/sites-enabled/
      - C:\xampp\htdocs\webScraper:/var/www/html/ 

and that worked.

But so now I only want to use the dockerfile.

So I tried this:

docker build -t docker_webcrawler .

and this command:

docker run -d -p 80:80 --name cntr-apache docker_webcrawler

But if I then go to: http://localhost:80

I only see a empty directory:

Index of /
[ICO]   Name    Last modified   Size    Description

So what I have to change? That I only have to use the dockerfile?

Thank you

CodePudding user response:

It looks like you're missing the volume mappings that you have in your docker-compose file. Try this

docker run -d -p 80:80 --name cntr-apache -v C:\xampp\htdocs\webScraper/docker:/etc/apache2/sites-enabled/ -v C:\xampp\htdocs\webScraper:/var/www/html/ docker_webcrawler
  • Related