我有这个docker-compose.yml:
version: "3.1"
services:
memcached:
image: memcached:alpine
container_name: universal-memcached2
redis:
image: redis:alpine
container_name: universal-redis2
mariadb:
image: mariadb:10.4
container_name: universal-mariadb2
working_dir: /application
volumes:
- .:/application
- "../data/db:/var/lib/mysql" # skasowac
environment:
- MYSQL_ROOT_PASSWORD=Haslo
- MYSQL_DATABASE=sample
- MYSQL_USER=user
- MYSQL_PASSWORD=Haslo
ports:
- "8083:3306"
webserver:
image: nginx:alpine
container_name: universal-webserver2
working_dir: /application
volumes:
- .:/application
- ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
php-fpm:
build: phpdocker/php-fpm
container_name: universal-php-fpm2
working_dir: /application
volumes:
- .:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini
volumes:
generated:
var:
static:
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mariadb
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
ports:
- '8081:80'
当我在symfony 4中运行我的最新项目时,它的运行速度非常慢...:(
我有新的MacO和Docker桌面。 我目前正在学习Symfony和Laravel框架,但这对于Docker来说非常慢。它甚至都没有工作。
我该如何修理?
答案 0 :(得分:9)
正如其他答案中提到的那样,问题归结为Docker与OSX上的文件系统交互的方式。
我找到了一篇很棒的文章,介绍如何在OSX上更快地完成工作:
https://vivait.co.uk/labs/docker-for-mac-performance-using-nfs
这篇文章中,真正的解决方案是更改文件系统以使用NFS,但是由于我对Docker一无所知(它是为我工作而设置的),我选择使用较新版本的Docker中可用的选项
我在example.xlsm
中for year_url in years_url:
# For every page in the interval 1-4
for page in pages:
# Make a get request
response = requests.get('http://www.imdb.com/search/title?release_date=' + year_url +
'&sort=num_votes,desc&page=' + page)
# Parse the content of the request with BeautifulSoup
page_html = BeautifulSoup(response.text, 'lxml')
# Select all the 50 movie containers from a single page
mv_containers = page_html.find_all('div', class_ = 'lister-item mode-advanced')
# For every movie of these 50
for container in mv_containers:
# If the movie has a Metascore, then:
if container.find('div', class_ = 'ratings-metascore') is not None:
# Scrape the name
name = container.h3.a.text
names.append(name)
# Scrape the genre
genre = container.p.find('span', class_ = 'genre').text.rstrip().replace("\n","").split(",")
genres.append(genre)
# Scrape the runtime
runtime = container.p.find('span', class_ = 'runtime').text
runtimes.append(runtime)
# Scrape the year
year = container.h3.find('span', class_ = 'lister-item-year').text
years.append(year)
# Scrape the IMDB rating
imdb = float(container.strong.text)
imdb_ratings.append(imdb)
# Scrape the Metascore
m_score = container.find('span', class_ = 'metascore').text
metascores.append(int(m_score))
# Scrape the number of votes
vote = container.find('span', attrs = {'name':'nv'})['data-value']
votes.append(int(vote))
# Scrape the GrossMill
gross = int(container.find('span', text='Gross:').find_next('span')['data-value'].replace(',', ''))
print(gross)
grossmill.append(gross)
下的所有选项中添加了{
<a class="btn btn-danger" onclick="del_data();" href="del_mydata.jsp? product_id=<%= getstate have("product_id")%>">Delete</a>
}
。重新启动容器后,每个容器的速度几乎是以前的两倍。速度不如原生,但足够快。
文章示例:
:delegated
NFS示例很长,基本上需要复制文章的一半,因此我不会添加它,但是此volumes
解决方案是一个很好的起点。
答案 1 :(得分:2)
事实上,Docker需要一个普通的Linux kernel
才能运行。不幸的是,Mac OS和Windows无法提供此功能。因此,Mac OS上有一个客户端来运行Docker。除此之外,Mac OS内核和应用程序(Docker容器)之间还有一个抽象层,文件系统也不相同。因此,Docker在Mac OS上运行缓慢。您无法像在Linux上那样在Mac OS上运行Docker。
如果我需要提供一些有关实际用例的实例。我有同一台机器。因此,我在Mac OS Mojave的Docker v18上使用Symfony 4。这是我的Symfony在Docker上的总执行时间。 (很明显,这取决于您的前端和数据库查询,但我尝试向您介绍主要逻辑。)
只要我使用不带Docker的Symfony,以下就是我的总执行时间。
我们可以做一些改进,以获得更好的工作空间。例如,您可以使用这样的卷
volumes:
- .:/application:cached
答案 2 :(得分:0)
一个选择是使用http://docker-sync.io/,但是您将无法获得与基于Linux的计算机相同的性能。
答案 3 :(得分:0)
通过使用Mutagen,可以在Mac上几乎与Linux上的本机共享卷上一样快地获得性能。有一个基准测试here。
我创建了a full example for a Symfony project,它可以用于任何语言的任何类型的项目。
答案 4 :(得分:0)
我建议使用Parallels(适用于macOS的最佳虚拟化)。然后:
如果使用VSCode,则可以安装SSH扩展,并且它足够快来编辑文件。您还可以通过虚拟机的IP地址在macOS上访问您的网站。
答案 5 :(得分:0)
这是已知的。 docker和Mac出现问题...它们不是最好的伙伴,但它们可以彼此玩耍。
将:cached
添加到卷中,并且速度可以控制。