2016-04-05 72 views
5

Erişim sahip olduğu sistem kaynaklarının miktarını sınırlamak için bir docker konteynerinin içinde postgres çalıştırıyorum. Verilerin nasıl kalıcı hale getirileceğini anlamakta biraz sorun yaşıyorum. Ben aşağıdaki makaleleri okudum: Bir veri sadece konteyner kullanılarak ve sonra ona benim postgres konteyner linki sahip öneririzDocker'taki kalıcı veriler Postgres

https://www.andreagrandi.it/2015/02/21/how-to-create-a-docker-image-for-postgresql-and-persist-data/

http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/

. Anlamakta başarısız olduğum şey; Bunun avantajı nedir? Anlayabildiğim kadarıyla, eğer herhangi bir nedenden dolayı docker-makine kapanmışsa (örneğin, farklı bir fiziksel makineye taşıyorsa), veri sadece konteyner çalışmayı durdurur ve tüm içeriği kaybolur mu? Postgres kapsayıcısında bir birim oluşturmayı denedim, ancak diske hiçbir şey kaydetmiyor gibi görünüyor.

İşte docker dosyam. Neyi yanlış yapıyorum?

FROM ubuntu 
MAINTAINER Andrew Broadbent <[email protected]> 

# Add the PostgreSQL PGP key to verify their Debian packages. 
# It should be the same key as https://www.postgresql.org/media/keys/ACCC4CF8.asc 
RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 

# Add PostgreSQL's repository. It contains the most recent stable release 
#  of PostgreSQL, ``9.3``. 
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list 

# Install ``python-software-properties``, ``software-properties-common`` and PostgreSQL 9.3 
# There are some warnings (in red) that show up during the build. You can hide 
# them by prefixing each apt-get statement with DEBIAN_FRONTEND=noninteractive 
RUN apt-get update && apt-get install -y python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 

# Note: The official Debian and Ubuntu images automatically ``apt-get clean`` 
# after each ``apt-get`` 

# Run the rest of the commands as the ``postgres`` user created by the ``postgres-9.3`` package when it was ``apt-get installed`` 
USER postgres 

# Create a PostgreSQL role named ``docker`` with ``docker`` as the password and 
# then create a database `docker` owned by the ``docker`` role. 
# Note: here we use ``&&\`` to run commands one after the other - the ``\`` 
#  allows the RUN command to span multiple lines. 
RUN /etc/init.d/postgresql start &&\ 
    psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\ 
    createdb -O docker docker 

# Complete configuration 
USER root 
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf 
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf 

# Expose the PostgreSQL port 
EXPOSE 5432 

# Add VOLUMEs to allow backup of config, logs and databases 
RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql 
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] 

# Set the default command to run when starting the container 
USER postgres 
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] 

cevap