waterlaw 网站搬家到 docker 系列之三-- 使用 docker-compose

0. 使用 docker 进行容器间的连接

启动上一节的 postgres 容器, Name 改为 pgsql

docker rename CONTAINER NEW_NAME

修改 Django 的 settings.py 配置

settings.py

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.postgresql_psycopg2',  # Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'

        'NAME': 'blog',  # Your db name, Or path to database file if using sqlite3

        'USER': 'postgres',

        'PASSWORD': 'postgres',

        'HOST': 'pgsql',  # Your db host, set to empty string('') for default for localhost,  Not used with sqlite3

        'PORT': '5432',  # Your db port, set to empty string('') for default, Not used with sqlite3
    }
}

HOST 改名为 pgsql, 方便下面连接容器时设置别名

注: docker 容器间网络访问的 host 是可以通过别名来访问的。

开启 Django 容器

docker run -it --rm --name waterlaw.top --link pgsql:pgsql -v E:\projects\waterlawblog:/home/code -p 8000:8000 waterlaw:top /bin/bash ./start.sh

参数说明 - --rm: 容器退出时销毁容器 - --link: 连接容器:容器别名 - start.sh: 启动脚本

start.sh 内容

source ../pysp/bin/activate && python3 manage.py runserver 0.0.0.0:8000

关于 --link 更多内容请参考文章最后的参考文献。

1. 制作 docker-compose.yml 文件

需要: 一个 Dockerfile 制作 web 镜像, 另外从 Docker Hub 拉取 postgres:9.6 镜像

2. 服务器安装 docker-compose

ubuntu 下使用以下命令:

apt install docker-compose

3. docker-compose build

docker-compose build
docker-compose up -d

依目前来看, up 命令会去拉取依赖镜像。

4. docker-compose.yml 启动命令不支持连续的两个命令比如:

. ../pysp/bin/activate && python3 manage.py runserver 0.0.0.0:8000

docker-compose.yml 中 web 镜像的 command 属性应该为脚本, 以下是错的。

command: python3 manage.py runserver 0.0.0.0:8000

5. 制作 shell 脚本

根目录下新建 start.sh

. ../pysp/bin/activate && python3 manage.py runserver 0.0.0.0:8000

修改 docker-compose.yml 中 web 镜像的 command 属性为

command: /bin/bash ./start.sh

6. 未完, 待续

参考文献

docker 容器的网络设置

发表评论

评论内容
 

评论列表, 共 0 条评论