Difference between revisions of "Manual container creation"
From Tech-Wiki
Line 3: | Line 3: | ||
If you need to create a custom container image, adding your own packages, create a Dockfile as follows: | If you need to create a custom container image, adding your own packages, create a Dockfile as follows: | ||
− | FROM | + | FROM debian:jessie |
− | + | MAINTAINER Paul Smith <p@ulsmith.net> | |
+ | LABEL Custom container | ||
+ | ## Install base packages | ||
RUN echo "deb http://ftp.de.debian.org/debian stretch main" >> /etc/apt/sources.list | RUN echo "deb http://ftp.de.debian.org/debian stretch main" >> /etc/apt/sources.list | ||
− | RUN apt-get update | + | RUN apt-get update && \ |
− | + | apt-get -yq install \ | |
− | + | apache2 \ | |
+ | php5 \ | ||
+ | libapache2-mod-php5 \ | ||
+ | curl \ | ||
+ | ca-certificates \ | ||
+ | php5-curl \ | ||
+ | php5-json \ | ||
+ | php5-odbc \ | ||
+ | php5-sqlite \ | ||
+ | php5-mysql \ | ||
+ | php5-mcrypt \ | ||
+ | python bash && \ | ||
+ | apt-get clean -y && \ | ||
+ | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt/archive/*.deb | ||
+ | RUN /usr/sbin/php5enmod mcrypt && a2enmod rewrite && mkdir /bootstrap | ||
+ | ADD site.conf /etc/apache2/sites-available/000-default.conf | ||
+ | ADD start.sh /bootstrap/start.sh | ||
+ | RUN chmod 755 /bootstrap/start.sh && chown -R www-data:www-data /var/www/html | ||
EXPOSE 80 | EXPOSE 80 | ||
− | + | ENTRYPOINT ["/bootstrap/start.sh"] | |
start.sh | start.sh | ||
Line 36: | Line 55: | ||
docker image build -t container1 . | docker image build -t container1 . | ||
− | Then you can run this container using the compose file below: | + | Then you can run this container using the compose file below (which will build the image anyway): |
version: '2' | version: '2' | ||
services: | services: | ||
myproject: | myproject: | ||
build: ./ | build: ./ | ||
− | container_name: | + | container_name: webserver |
restart: always | restart: always | ||
networks: | networks: |
Revision as of 14:36, 7 April 2020
If you need to create a custom container image, adding your own packages, create a Dockfile as follows:
FROM debian:jessie MAINTAINER Paul Smith <[email protected]> LABEL Custom container ## Install base packages RUN echo "deb http://ftp.de.debian.org/debian stretch main" >> /etc/apt/sources.list RUN apt-get update && \ apt-get -yq install \ apache2 \ php5 \ libapache2-mod-php5 \ curl \ ca-certificates \ php5-curl \ php5-json \ php5-odbc \ php5-sqlite \ php5-mysql \ php5-mcrypt \ python bash && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt/archive/*.deb RUN /usr/sbin/php5enmod mcrypt && a2enmod rewrite && mkdir /bootstrap ADD site.conf /etc/apache2/sites-available/000-default.conf ADD start.sh /bootstrap/start.sh RUN chmod 755 /bootstrap/start.sh && chown -R www-data:www-data /var/www/html EXPOSE 80 ENTRYPOINT ["/bootstrap/start.sh"]
start.sh
#!/bin/bash source /etc/apache2/envvars exec apache2 -D FOREGROUND
site.conf
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html> Options FollowSymLinks AllowOverride All Order allow,deny Allow from All Require all granted </Directory> </VirtualHost> ServerName localhost ServerSignature Off ServerTokens Prod
The image based on Dockfile file above can be generated by the command below
docker image build -t container1 .
Then you can run this container using the compose file below (which will build the image anyway):
version: '2' services: myproject: build: ./ container_name: webserver restart: always networks: - docker-localhost ports: - 80:80 networks: docker-localhost: