十二、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、运行效果

image-20211010181823551

访问效果,可以看到状态码是200,访问成功

image-20211010181700475

什么?讲的不详细,得了吧,你要这么详细有什么用,反正也看不懂!

1.2 资料

实战Django

遇到的报错,或者重启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

-qqy选项说明

3、编辑引导加载 Rails 的文件 Gemfile

source 'https://rubygems.org'
gem 'rails' 

这里不要指定rails版本,让它装最新版

什么是Gemfile

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

可以看到已经生成了新的应用文件了

image-20211010222207751

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、效果如下

image-20211010223444828

2.2 资料

实战Rails

三、实战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、运行效果如下

image-20211010230323137

访问效果如下

image-20211010230247037

3.2 资料

实战WordPress

四、实战LNMP

这里的LNMP的案例是一个打包好的命令,是开源的,是一个94年的大佬做的,真的很厉害,这是他的github这是他的博客,链接留在这里,希望我以后能研究明白吧。

五、参考资料

Docker从入门到实践

今天的学习是为了以后的工作更加的轻松!
原文地址:https://www.cnblogs.com/tz90/p/12245684.html