十二、Compose实战
于2021年10月10日学习
一、实战Django
Django 是一个 Web 应用框架,好了你知道的已经够多了,下面开始讲案例。
要用到三个文件
- Dockerfile
- requirements.txt
- docker-compose.yml
1.1 配置
1、创建Django
项目文件夹
mkdir Django
cd Django/
2、编辑Dockerfile
文件内容如下
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
3、编辑requirements.txt
文件内容如下
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
4、编辑docker-compose.yml
文件内容如下
version: "3"
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: 'postgres'
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
5、启动Django
应用
docker-compose run web django-admin startproject django_example .
之后在当前目录会生成一个Django应用,记得改下权限
我是root,权限最大,如果是其他用户,需要修改权限
6、修改django_example/settings.py
文件中的DATABASES节点内容
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
'PASSWORD': 'postgres',
}
}
7、运行
docker-compose up
8、运行效果
访问效果,可以看到状态码是200,访问成功
1.2 资料
遇到的报错,或者重启docker
二、实战Rails
Rails是一个web开发框架,知道了吧,知道了就直接看案例
还是需要三个文件,对!就是这老三样
- Dockerfile
- requirements.txt
- docker-compose.yml
2.1 配置
1、创建Rails
项目文件夹
mkdir Rails
cd Rails/
2、编辑Dockerfile
文件内容如下
FROM ruby
RUN apt-get update -qqy && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
RUN bundle install
ADD . /myapp
3、编辑引导加载 Rails 的文件 Gemfile
source 'https://rubygems.org'
gem 'rails'
这里不要指定rails版本,让它装最新版
4、编辑docker-compose.yml
文件内容如下
version: "3"
services:
db:
image: postgres
ports:
- "5432"
web:
build: .
command: bundle exec rackup -p 3000
volumes:
- .:/myapp
ports:
- "3000:3000"
5、启动
docker-compose run web rails new . --force --database=postgresql --skip-bundle
可以看到已经生成了新的应用文件了
6、编辑新生成的config
目录下的database.yml
文件,替换为如下内容
#备份
cp config/database.yml config/database.yml.bak
#将配置文件替换为如下内容
development: &default
adapter: postgresql
encoding: unicode
database: postgres
pool: 5
username: postgres
password:
host: db
test:
<<: *default
database: myapp_test
8、重新构建再启动
docker-compose build
docker-compose up
9、再开一个终端,运行如下命令创建数据库
docker-compose run web rake db:create
10、效果如下
2.2 资料
三、实战WordPress
这个案例最简单,不过我相信你已经放弃了,看不到这里了,哈哈开个玩笑
wordpress是php写的博客网站,需要搭配mysql数据库使用
3.1 配置
1、创建wordpress
项目文件夹
mkdir wordpress
cd wordpress/
2、编辑docker-compose.yml
文件内容如下
version: "3"
services:
db:
image: mysql:8.0
command:
- --default_authentication_plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
3、运行如下命令拉取镜像并启动
docker-compose up -d
4、运行效果如下
访问效果如下
3.2 资料
四、实战LNMP
这里的LNMP的案例是一个打包好的命令,是开源的,是一个94年的大佬做的,真的很厉害,这是他的github,这是他的博客,链接留在这里,希望我以后能研究明白吧。