私信  •  关注

Mihai

Mihai 最近创建的主题
Mihai 最近回复了
5 年前
回复了 Mihai 创建的主题 » 如何使用docker编写中的官方作曲家图像?

理想情况下,您可以在多级构建中使用Composer映像,以避免安装它及其对主机的所有依赖关系。

FROM composer:1.8 AS composer

FROM php:7.1-apache-stretch

COPY --from=composer /usr/bin/composer /usr/bin/composer

WORKDIR /app

COPY . .

# Place here your command that uses Composer
RUN composer install

注意:您需要查看RUN命令,因为我不是PHP开发人员。。。。;)

version: "3"

services:
  app:
    build: .
    image: php-app:1.0
    container_name: "php-app"
    ports: 
      - "8080:80"

由于文件在生成时复制到映像中,因此不再需要卷。

生成映像并运行服务:

docker-compose up --build -d

我更改了您的配置,它运行正常:

version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    volumes:
      - ./init.js:/docker-entrypoint-initdb.d/init.js
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
      MONGO_INITDB_DATABASE: mydb

在这里,我指定了最初要创建的数据库,并挂载了init脚本。

初始化js:

var db = connect("mongodb://localhost/mydb");

db.createRole(
    {
        role: "somerole",
        privileges: [
            {
              actions: [ "find", "update", "insert" ],
              resource: { db: "mydb", collection: "" }
            }
          ],
        roles: [  ]
    }
)

db.createUser(
    {
        user: "admin",
        pwd: "adminpass",
        roles: [ { role: "somerole", db: "mydb" } ]
    }
)

db.createUser(
    {
        user: "system",
        pwd: "systempass",
        roles: [ { role: "somerole", db: "mydb" } ]
    }
)

这里的重要部分是第一行,否则在mydb数据库中查找角色时,将在管理数据库中创建角色。

通过这个设置,我可以启动数据库并连接到它。

5 年前
回复了 Mihai 创建的主题 » sockotini和redis多发射处理

当客户端连接时,您当前只发出一个通知。为每个发出通知 client-notification 事件,使用以下行中的内容:

var redisAdapter = require('socket.io-redis');
var io = require("socket.io").listen(server);

io.adapter(redisAdapter({
    host: process.env.REDIS_ENDPOINT || 'localhost',
    port: 6379
}));

var userNotification = {};

io.sockets.on('connection', function(socket) {

    io.of('/').adapter.clients((err, clients) => {
        console.log("Socket IO Clients")
        console.log(clients); // an array containing all connected socket ids
    });

    socket.emit('notification', userNotification);

    //Client Notification
    socket.on('client-notification', function(data) {
        userNotification.data = data;

        socket.emit('notification', userNotification);
    });
});
4 年前
回复了 Mihai 创建的主题 » 如何管理装载到Docker容器中的卷的权限?

#!/bin/bash

chown -R www-data:www-data /var/www/html/wp-content
docker-entrypoint.sh apache2-foreground

...
  wordpress:
...
    working_dir: /var/www/html
    volumes:
        - './my-theme:/var/www/html/wp-content/themes/my-theme'
        - './startup.sh:/startup.sh'
    entrypoint: /startup.sh